标签:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 34374 | Accepted: 19027 |
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
Source
1 /**/ 2 #include<iostream> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 #include<algorithm> 7 using namespace std; 8 const int INF=0x3f3f3f3f; 9 const int mxn=200; 10 int mp[mxn][mxn]; 11 int ans=INF,pos=0; 12 int n,m; 13 void read(){ 14 int x,t; 15 int i,j; 16 for(i=1;i<=n;i++){ 17 scanf("%d",&m); 18 for(j=1;j<=m;j++){ 19 scanf("%d%d",&x,&t); 20 mp[i][x]=t; 21 } 22 } 23 return; 24 } 25 void floyd(){ 26 int i,j,k; 27 for(k=1;k<=n;k++) 28 for(i=1;i<=n;i++) 29 for(j=1;j<=n;j++){ 30 mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]); 31 } 32 return; 33 } 34 int main(){ 35 while(scanf("%d",&n) && n){ 36 memset(mp,0x3f,sizeof mp); 37 ans=INF; 38 pos=0; 39 read(); 40 floyd(); 41 int i,j; 42 for(i=1;i<=n;i++){ 43 int mx=0; 44 for(j=1;j<=n;j++){ 45 if(j==i)continue; 46 mx=max(mx,mp[i][j]); 47 } 48 if(ans>mx){ 49 ans=mx; 50 pos=i; 51 } 52 } 53 if(ans!=INF)printf("%d %d\n",pos,ans); 54 else printf("disjoint\n"); 55 } 56 return 0; 57 }
标签:
原文地址:http://www.cnblogs.com/SilverNebula/p/5837736.html