• POJ Stockbroker Grapevine(floyd)


    https://vjudge.net/problem/POJ-1125

    题意:

    题意不是很好理解,首先输入一个n,表示有n个股票经纪人,接下来输入n行,每行第一个数m为该股票经纪人认识的经纪人数,然后输入m对数(a,t),表示第i个经纪人把消息传给第a个经纪人所需要的时间。

    计算将消息传遍所有人所需要的最少时间。

    思路:

    起点任意,用floyd比较好。因为floyd求出的是每两点之间的最短路,所以最后计算最小时间时,需要先取最大值,比如说1号经纪人为起点,因为谁都可能为终点,所以枚举所有人,将最大时间作为最小时间,这个应该不难理解。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<string>
     4 #include<cstring>
     5 using namespace std;
     6 
     7 const int maxn = 100 + 5;
     8 const int INF = 0x3f3f3f3f;
     9 
    10 int n;
    11 int d[maxn][maxn];
    12 
    13 
    14 void floyd()
    15 {
    16     for (int k = 1; k <= n;k++)
    17     for (int i = 1; i <= n;i++)
    18     for (int j = 1; j <= n; j++)
    19         d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
    20 }
    21 
    22 int main()
    23 {
    24     //freopen("D:\txt.txt", "r", stdin);
    25     int x, a, t;
    26     while (~scanf("%d", &n) && n)
    27     {
    28         for (int i = 1; i <= n; i++)
    29         {
    30             d[i][i] = 0;
    31             for (int j = 1; j < i; j++)
    32                 d[i][j] = d[j][i] = INF;
    33         }
    34 
    35         for (int i = 1; i <= n; i++)
    36         {
    37             scanf("%d", &x);
    38             while (x--)
    39             {
    40                 scanf("%d%d", &a, &t);
    41                 d[i][a] = t;
    42             }
    43         }
    44 
    45         floyd();
    46         int stock;
    47         int ans = INF;
    48         for (int i = 1; i <= n; i++)
    49         {
    50             int MAX = 0;
    51             for (int j = 1; j <= n; j++)
    52             {
    53                 if (i == j) continue;
    54                 MAX = max(MAX, d[i][j]);
    55             }
    56             if (ans > MAX)
    57             {
    58                 ans = MAX;
    59                 stock = i;
    60             }
    61         }
    62         if (ans == INF)
    63             printf("disjoint
    ");
    64         else
    65             printf("%d %d
    ", stock, ans);
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    远程连接mysql root账号报错:2003-can't connect to MYSQL serve
    php定位并且获取天气信息
    PHP Ajax 跨域问题最佳解决方案
    AngularJS 过滤器
    AngularJS自定义指令及指令配置项
    php获取微信的openid
    SVN服务器
    redis的LRU策略理解
    golang入门案例之http client请求
    golang入门案例之SOCKET
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6595972.html
Copyright © 2020-2023  润新知