#include<stdio.h>
#define MAX 999999
int 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;
}
ZOJ 1082(POJ 1125)
最新推荐文章于 2022-02-07 15:29:59 发布