POJ1125-Stockbroker Grapevine

http://poj.org/problem?id=1125

暴力下

#include<stdio.h>
#define INF 0xfffffff
#define N 200
int map[N][N],t[N],n,min;
void floyd()
{
    int i,j,k;
    for(k=1;k<=n;k++)
       for(i=1;i<=n;i++)
          for(j=1;j<=n;j++)
             if(map[i][k]+map[k][j]<map[i][j])
                map[i][j]=map[i][k]+map[k][j];
    for(i=1;i<=n;i++)
    {
        t[i]=map[i][1];
        for(j=1;j<=n;j++)
           if(map[i][j]>t[i])
              t[i]=map[i][j];
    }
    min=INF;
    for(i=1;i<=n;i++)
       if(t[i]<min)
       {
              min=t[i];
           k=i;
       }
    if(min==INF)
       printf("disjoint\n");
    else
       printf("%d %d\n",k,min);
}
int main(void)
{
    int i,j,k,m,t;
    while(scanf("%d",&n),n)
    {
        for(i=1;i<=n;i++)
           for(j=1;j<=n;j++)
           {
                  if(i==j)
                     map[i][j]=0;
                 else
                    map[i][j]=INF;
           }
        for(i=1;i<=n;i++)
        {
            scanf("%d",&m);
            for(k=1;k<=m;k++)
            {
                scanf("%d%d",&j,&t);
                map[i][j]=t;
            }
        }
        floyd();
    }
    return 0;
}
posted @ 2012-08-30 18:11  Yogurt Shen  阅读(215)  评论(0编辑  收藏  举报