ZOJ 1082(POJ 1125)
来源:互联网 发布:淘宝童装名字 编辑:程序博客网 时间:2024/06/03 16:31
#include<stdio.h>#define MAX 999999int a[101][101];int main(){ int n,i,j,p,k,min,min1,max,flag; while(1) { scanf("%d",&n); if(n==0) break; for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=MAX; for(i=1;i<=n;i++) a[i][i]=0; for(i=1;i<=n;i++) { scanf("%d",&k); for(j=1;j<=k;j++) { scanf("%d",&p); scanf("%d",&a[i][p]); } } for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(a[i][k]+a[k][j]<a[i][j]) a[i][j]=a[i][k]+a[k][j]; } min=MAX; for(i=1;i<=n;i++) { flag=0; max=0; for(j=1;j<=n;j++) { if(a[i][j]==MAX) flag=1; else if(a[i][j]>max) max=a[i][j]; } if(max<min && flag==0) { min=max; min1=i; } } if(min==MAX) printf("disjoint"); else printf("%d %d\n",min1,min); } return 0;}