您的位置:首页 > 新闻 > 热点要闻 > 代理网络工具下载_义乌疫情最新情况_广州百度seo_网络推广外包哪个公司做的比较好

代理网络工具下载_义乌疫情最新情况_广州百度seo_网络推广外包哪个公司做的比较好

2024/10/13 2:52:44 来源:https://blog.csdn.net/weixin_70911613/article/details/142600787  浏览:    关键词:代理网络工具下载_义乌疫情最新情况_广州百度seo_网络推广外包哪个公司做的比较好
代理网络工具下载_义乌疫情最新情况_广州百度seo_网络推广外包哪个公司做的比较好

弗洛伊德算法(Floyd)

简介:

主要用来解决任意两点间的最短路径的一种算法(不能解决带有“负权回路”即“负权环”的图,因为它没有最短路径)
时间复杂度为O(N3),空间复杂度为O(N2)

算法思路:

将相关数据用邻接矩阵储存(邻接矩阵详解),
若两个点间没有联系,则赋值为
*之后对矩阵进行更新,每次选取一个点作为经过点,比较该路线与之前的大小,选取较小的,更新数据,重复以上操作。

例题展示

洛谷:B3647 【模板】Floyd
题目描述
给出一张由 n 个点 m 条边组成的无向图。
求出所有点对 (i,j) 之间的最短路径。
输入格式
第一行为两个整数 n,m,分别代表点的个数和边的条数。
接下来 m 行,每行三个整数 u,v,w,代表
u,v 之间存在一条边权为 w 的边。
输出格式
输出 n
n 行每行 n 个整数。
第 i 行的第 j 个整数代表从 i 到 j 的最短路径。
输入
4 4
1 2 1
2 3 1
3 4 1
4 1 1
输出
0 1 2 1
1 0 1 2
2 1 0 1
1 2 1 0

#include<bits/stdc++.h>//Floyd最短路径 
using namespace std;
const int N=1e2+50;
const int M=1e9+20;
int a[N][N];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){a[i][j]=M;a[j][j]=0;//自己到自己点位距离为0}//初始化邻接矩阵 int q,w,e;for(int i=1;i<=m;i++){cin>>q>>w>>e;a[q][w]=a[w][q]=min(a[q][w],e);}for(int k=1;k<=n;k++)//以第K个点为经过点,进行遍历,选出最短路径 for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=min(a[i][j],a[i][k]+a[k][j]);for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){cout<<a[k][i]<<" ";}cout<<endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com