Stockbroker Grapevine (floyd)

1A 

#include <stdio.h>
#include <string.h>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int grid[105][205],dist[105][205],n,p;
int floyd()
{
    int k,i,j,ans=INF,ans1,minc=0;
    for (i=1;i <=n;i++)
        for (j=1;j<=n;j++)
        dist[i][j] = grid[i][j];
    for (k=1;k<=n;k++)
        for (i=1;i<=n;i++)
             for (j=1;j<=n;j++)
                if(dist[i][j]>dist[i][k]+dist[k][j])
                dist[i][j]=dist[i][k]+dist[k][j];
    for (i=1;i<=n;i++)
    {
        ans1=0;
        for(j=1;j<=n;j++)
            ans1+=dist[i][j];
        if(ans>ans1 && ans1>=0)
        {
            ans=ans1;
            p=i;
        }
    }
    for(j=1;j<=n;j++)
        if(minc<dist[p][j] && p!=j)
            minc=dist[p][j];
    return minc;
}
int main()
{
    int i,j,t,a,b;
    while (scanf("%d",&n) && n)
    {
        for(i=1; i<=n; i++)
            for(j=1; j<=n; j++)
            grid[i][j]=i==j?0:INF;
        for (i=1;i<=n;i++)
        {
            scanf("%d",&t);
            for(j=1;j<=t;j++)
            {
                scanf("%d%d",&a,&b);
                grid[i][a]=b;
            }
        }
        printf("%d %d\n",p,floyd());
    }
	return 0;
}
posted @ 2013-12-18 18:27  单调的幸福  阅读(174)  评论(0编辑  收藏  举报