您的位置:首页 > 其它

POJ:1125 Stockbroker Grapevine

2013-10-25 07:00 375 查看
Floyd入门题吧。不过POJ的数据比较水,没有不连通的情况。。



#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int gl[1005][1005];
int main()
{
    int n;
    while(scanf("%d",&n)&&n)
    {

        memset(gl,0x7f,sizeof(gl));
        int INF=gl[0][0];
        for(int i=1; i<=n; ++i)
        {
            int m,u,w;
            scanf("%d",&m);
            gl[i][i]=0;
            for(int j=0; j<m; ++j)
            {
                scanf("%d%d",&u,&w);
                gl[i][u]=w;
            }
        }
        for(int k=1; k<=n; ++k)
            for(int i=1; i<=n; ++i)
                for(int j=1; j<=n; ++j)
                    if(gl[i][k]!=INF&&gl[k][j]!=INF)
                        gl[i][j]=min(gl[i][j],gl[i][k]+gl[k][j]);
        bool ok;
        int mn=-1,res,t;
        for(int i=1; i<=n; ++i)
        {
            ok=true;
            res=0;
            for(int j=1; j<=n; ++j)
                if(gl[i][j]==INF)
                {
                    ok=false;
                    break;
                }
                else res=max(gl[i][j],res);
            if(ok)
            {
                if(mn==-1)
                {
                    mn=res;
                    t=i;
                }
                else if(mn>res)
                {
                    mn=res;
                    t=i;
                }
            }
        }
        if(mn==-1) puts("disjoint");
        else printf("%d %d\n",t,mn);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: