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;}