zoukankan      html  css  js  c++  java
  • poj 1125 Stockbroker Grapevine

    用floyd算法求出任意两点之间的距离,然后从一点出发找到其他点的最大的距离,找从所有点出发到其他点里的最大距离这一集合的最小值,就是所求.

    #include<stdio.h>
    #include<string.h>
    #define MAXN 110
    
    int n, m, d[MAXN][MAXN];
    
    int main()
    {
        while(scanf("%d",&n))
        {
            if(n == 0) break;
            memset(d,0x3f,sizeof(d));
            for(int i = 1; i <= n; i ++)
            {
                scanf("%d",&m);
                for(int j = 0; j < m; j ++)
                {
                    int a, b;
                    scanf("%d%d",&a,&b);
                    d[i][a] = b;
                }
            }
            for(int k = 1; k <= n; k ++)
            for(int i = 1; i <= n; i ++)
                for(int j = 1; j <= n; j ++)
                {
                    if(d[i][j] > d[i][k] + d[k][j])
                        d[i][j] = d[i][k] + d[k][j];
                }
            int max;
            int min = 0x7fffffff;
            int flag = 0;
            for(int i = 1; i <= n; i ++)
            {
                max = 0;
                for(int j = 1; j <= n; j ++)
                {
                    if(i != j && max < d[i][j])
                        max = d[i][j];
                }
                if(min > max) {min = max;flag = i;}
            }
            if(min > 10000000) printf("disjoint\n");
            else printf("%d %d\n",flag,min);
        }
        return 0;
    }
  • 相关阅读:
    luogu P3174 毛毛虫
    P3386二分图最大匹配模版
    P4180 严格次小生成树
    差分约束
    高斯消元
    P1306 斐波那契公约数
    极值
    排序
    P1852 [国家集训队]跳跳棋
    高精度模版
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2621472.html
Copyright © 2011-2022 走看看