标签:初始化 ++ 点距 name namespace can int c++ 初始
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\n"); 39 else printf("%d\n",dis[S][T]); 40 } 41 42 }
标签:初始化 ++ 点距 name namespace can int c++ 初始
原文地址:https://www.cnblogs.com/0424lrn/p/12237605.html