Floyd

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll; 
 4 
 5 const int N=1005;
 6 
 7 int D;
 8 
 9 int G[N][N];
10 
11 int n,m,s;
12 
13 ll dis[N][N];
14 
15 int main(){
16     D=(ll)pow(2ll,31)-1;
17     scanf("%d%d%d",&n,&m,&s);
18     for(int i=1;i<=n;i++)
19         for(int j=1;j<=n;j++)if(i!=j)dis[i][j]=D;
20     for(int i=1;i<=m;i++){
21         int x,y;
22         ll z;
23         scanf("%d%d%lld",&x,&y,&z);
24         dis[x][y]=min(dis[x][y],z);
25     }
26     for(int k=1;k<=n;k++){
27         for(int i=1;i<=n;i++){
28             for(int j=1;j<=n;j++){
29                 dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
30             }
31         }
32     }
33     for(int i=1;i<=n;i++){
34         printf("%lld ",dis[s][i]);
35     }
36 }
37 /*
38 5 15 5
39 2 5 181
40 1 5 98
41 4 2 49
42 3 2 262
43 4 3 26
44 2 4 192
45 5 1 221
46 2 2 254
47 4 4 233
48 1 5 44
49 5 4 67
50 4 2 214
51 1 1 47
52 1 1 118
53 5 4 3
54 
55 */

 

posted @ 2020-11-20 17:32  Venux  阅读(135)  评论(0编辑  收藏  举报