Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 35222 | Accepted: 19562 |
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
Source
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 int n,m,a,b,now,ans,ant; 6 int map[110][110]; 7 int main (){ 8 while(scanf("%d",&n)){ 9 if(!n) return 0; 10 ant=3000000; 11 for(int i=1;i<=n;i++) 12 for(int j=1;j<=n;j++) 13 map[i][j]=300000; 14 for(int i=1;i<=n;i++){ 15 map[i][i]=0; 16 scanf("%d",&m); 17 for(int j=1;j<=m;j++){ 18 scanf("%d%d",&a,&b); 19 map[i][a]=min(map[i][a],b); 20 } 21 } 22 for(int k=1;k<=n;k++) 23 for(int i=1;i<=n;i++) 24 for(int j=1;j<=n;j++) 25 map[i][j]=min(map[i][j],map[i][k]+map[k][j]); 26 for(int i=1;i<=n;i++){ 27 now=0; 28 for(int j=1;j<=n;j++) now=max(now,map[i][j]); 29 if(now<ant){ans=i;ant=now;} 30 } 31 if(ant>30000) printf("disjoint\n"); 32 else printf("%d %d\n",ans,ant); 33 } 34 }
题目来源:POJ
原文:http://www.cnblogs.com/J-william/p/6382122.html