标签:which desc ota rac find ogr title new cstring
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10183 Accepted Submission(s): 2791
1 //floyd 用一个path数组记录路径。 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 using namespace std; 6 int mp[1003][1003]; 7 int fei[1003],path[1003][1003]; 8 int main() 9 { 10 int n,a,b,t; 11 while(scanf("%d",&n)&&n) 12 { 13 for(int i=1;i<=n;i++) 14 for(int j=1;j<=n;j++) 15 { 16 scanf("%d",&mp[i][j]); 17 if(mp[i][j]==-1) 18 mp[i][j]=10000007; 19 path[i][j]=j; //初始化路径 20 } 21 for(int i=1;i<=n;i++) 22 scanf("%d",&fei[i]); 23 for(int k=1;k<=n;k++) 24 for(int i=1;i<=n;i++) 25 for(int j=1;j<=n;j++) 26 { 27 if(mp[i][j]>mp[i][k]+mp[k][j]+fei[k]) //加上tax. 28 { 29 mp[i][j]=mp[i][k]+mp[k][j]+fei[k]; 30 path[i][j]=path[i][k]; 31 } 32 else if(mp[i][j]==mp[i][k]+mp[k][j]+fei[k]&&path[i][j]>path[i][k]) 33 path[i][j]=path[i][k]; 34 } 35 while(scanf("%d%d",&a,&b)) 36 { 37 if(a<0&&b<0) break; 38 printf("From %d to %d :\n",a,b); 39 int x=a; 40 printf("Path: %d",a); 41 while(x!=b) 42 { 43 printf("-->%d",path[x][b]); 44 x=path[x][b]; 45 } 46 printf("\n"); 47 printf("Total cost : %d\n\n",mp[a][b]); 48 } 49 } 50 return 0; 51 }
标签:which desc ota rac find ogr title new cstring
原文地址:http://www.cnblogs.com/--ZHIYUAN/p/6058746.html