首页 > 代码库 > 最短路径算法
最短路径算法
最短路径算法1——Floyed与Dijkstra算法。
求图中一个点到另一个点的最短路径,毫无疑问Floyed算法是最简单的,而且是多源最短路径,但时间复杂度很高,达到O(n^3)。
原理就是不断遍历一边所有点,把他们当作中间点,每次更新整个图。
Floyed代码:
1 #include<cstdio> 2 #include<iostream> 3 #define N 4200 4 using namespace std; 5 int n,m,p,q,a,b,c,dis[N][N]; 6 int main(){ 7 scanf("%d%d%d%d",&n,&m,&p,&q); 8 for(int i=1;i<=n;++i) 9 for(int j=1;j<=n;++j) 10 dis[i][j]=4200000; 11 for(int i=1;i<=m;++i){ 12 scanf("%d%d%d",&a,&b,&c); 13 dis[a][b]=c; 14 dis[b][a]=c; 15 } 16 for(int k=1;k<=n;++k) 17 for(int i=1;i<=n;++i) 18 for(int j=1;j<=n;++j) 19 dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); 20 printf("%d",dis[p][q]); 21 return 0; 22 }
最短路径算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。