最短路 Floyd()

Posted 0424lrn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路 Floyd()相关的知识,希望对你有一定的参考价值。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int N = ???;
 5 const int INF = 0x3f3f3f3f;
 6 int n, m;
 7 int a, b, x;
 8 int dis[N][N];
 9 
10 void Floyd(){
11     for(int k=0; k<n; k++)
12         for(int i=0; i<n; i++)
13              for(int j=0; j<n; j++)
14              //选择从i到j的最短路 ( 比较当前知道的i到j的最短距离 与 从i到k再到j的距离) 
15                  dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]);
16 }
17 
18 int main()
19 {
20     while(scanf("%d %d",&n,&m)!=EOF){
21         //初始化 
22         for(int i=0; i<n; i++){
23             for(int j=0; j<n; j++)
24                 dis[i][j] = INF;
25             dis[i][j] = 0;
26         }
27         //输入两点距离 
28         for(int i=0; i<m; i++){
29             scanf("%d %d %d", &a, &b, &x);
30             x = min(dis[a][b], x);    
31             dis[a][b] = dis[b][a] = x;
32         }
33         // 
34         Floyd();
35         // 
36         int S,T;
37         scanf("%d %d",&S,&T);
38         if(dis[S][T]==INF)    printf("-1
");
39         else                printf("%d
",dis[S][T]);
40     }
41     
42 }

以上是关于最短路 Floyd()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Floyd-Warshall 算法中输出最短路径?

多源最短路径--Floyd-Warshall算法

Floyd算法(最短路)

Floyd

Floyd-Warshall 算法:获得最短路径

Floyd求解最短路