现在的位置: 首页 > 综合 > 正文

poj1125

2013年11月11日 ⁄ 综合 ⁄ 共 1399字 ⁄ 字号 评论关闭

水!

#include <iostream>

using namespace std;

#define inf 1 << 20

int dis[105][105];

int main()
{
    int n;
    while (cin >> n && n)
    {
        memset(dis, inf, sizeof(dis));
        for (int i = 1; i <= n; i++)
        {
            int a;
            cin >> a;
            for (int j = 1; j <= a; j++)
            {
                int b, c;
                cin >> b >> c;
                dis[i][b] = c;
            }
        }
        for (int k = 1; k <= n; k++)
        {
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    if (i != j && dis[i][j] > dis[i][k] + dis[k][j])
                    {
                        dis[i][j] = dis[i][k]+ dis[k][j];
                    }
                }
            }
        }

        int maxlength;
        int min_in_max = inf;
        int flag_source;

        for (int i = 1; i <= n; i++)
        {
            maxlength = 0;
            for (int j = 1; j <= n; j++)
            {
                if (i != j && maxlength<dis[i][j])
                    maxlength = dis[i][j];
            }
                if (min_in_max>maxlength)
                {
                    min_in_max = maxlength;
                    flag_source = i;
                }
            
        }

        if (min_in_max<inf)
            cout << flag_source << ' ' << min_in_max << endl;
        else
            cout << "disjoint" << endl;
    }
}

抱歉!评论已关闭.