标签:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 28851 | Accepted: 16003 |
Description
Input
Output
Sample Input
3 2 2 4 3 5 2 1 2 3 6 2 1 2 2 2 5 3 4 4 2 8 5 3 1 5 8 4 1 6 4 10 2 7 5 2 0 2 2 5 1 5 0
Sample Output
3 2 3 10
1 #include<stdio.h> 2 #include<string.h> 3 const int INF=9999999; 4 5 int edge[500][500],n; 6 //int dis[500][500],path[500][500]; 7 8 void floyd() 9 { 10 int i,j,k; 11 for(k=1;k<=n;k++) 12 { 13 for(i=1;i<=n;i++) 14 { 15 for(j=1;j<=n;j++) 16 { 17 if(edge[i][j]>(edge[i][k]+edge[k][j])) 18 { 19 edge[i][j]=edge[i][k]+edge[k][j]; 20 } 21 } 22 } 23 } 24 return; 25 } 26 27 int main() 28 { 29 int i,j,k, x,y; 30 int ans1,ans2; 31 while(scanf("%d",&n)!=EOF && n!=0) 32 { 33 for(i=1;i<=n;i++) 34 for(j=1;j<=n;j++) 35 { 36 edge[i][j]=INF; 37 } 38 for(i=1;i<=n;i++) edge[i][i]=0; 39 for(i=1;i<=n;i++) 40 { 41 scanf("%d",&k); 42 for(j=1;j<=k;j++) 43 { 44 scanf("%d %d",&x,&y); 45 edge[i][x]=y; 46 } 47 } 48 floyd(); 49 50 /*for(i=1;i<=n;i++) 51 { 52 for(j=1;j<=n;j++) 53 { 54 printf("%d ",edge[i][j]); 55 } 56 printf("\n"); 57 }*/ 58 59 60 ans2=INF; 61 for(i=1;i<=n;i++) 62 { 63 int ma=edge[i][1]; 64 for(j=2;j<=n;j++) 65 { 66 if(edge[i][j]>ma) 67 ma=edge[i][j]; 68 } 69 if(ma<ans2) 70 { 71 ans2=ma; 72 ans1=i; 73 } 74 } 75 if(ans2==INF) 76 printf("disjoint\n"); 77 else 78 printf("%d %d\n",ans1,ans2); 79 } 80 return 0; 81 }
标签:
原文地址:http://www.cnblogs.com/cyd308/p/4547377.html