zoukankan      html  css  js  c++  java
  • POJ Stockbroker Grapevine 1125 多源最短路(Floyd)

    题目大意:

    股票经纪人要散播股票的谣言,每个人都有人际关系,每个人只信任他相信的人传播的谣言, 其实也就是有向图。问 哪个人能最快的将谣言传播给所有人,并且求出传过去的最短时间。

    题目分析:

    我们用Floyd求出每个点的最短路,

    然后搜索每个点,看和这个点所连接点的最长时间就是这个人散播最后谣言的时间

    然后从所有的点中找出时间最长的点

     1 #include <iostream>
     2 #include <cmath>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <cstdio>
     6 #include <algorithm>
     7 #include <vector>
     8 #include <queue>
     9 using namespace std;
    10 #define INF 0xfffffff
    11 #define maxn 150
    12 
    13 int G[maxn][maxn];
    14 int n;
    15 
    16 void Floyd()
    17 {
    18     for(int k=1; k<=n; k++)
    19     {
    20         for(int i=1; i<=n; i++)
    21         {
    22             for(int j=1; j<=n; j++)
    23             {
    24                 G[i][j] = min(G[i][j],G[i][k] + G[k][j]);
    25             }
    26         }
    27     }
    28     int Min = INF, index = 1;
    29 
    30     for(int i=1; i<=n; i++)
    31     {
    32         int Max = 0;
    33         for(int j=1; j<=n; j++)
    34         {
    35             Max = max(Max,G[i][j]);
    36         }
    37         if(Max < Min)
    38         {
    39             Min = Max;
    40             index = i;
    41         }
    42     }
    43 
    44     if(Min == INF)
    45         printf("disjoint
    ");
    46     else
    47         printf("%d %d
    ",index,Min);
    48 
    49 }
    50 void Init()
    51 {
    52     for(int i=0; i<=n; i++)
    53     {
    54         G[i][i] = 0;
    55         for(int j=0; j<i; j++)
    56             G[i][j] = G[j][i] = INF;
    57     }
    58 }
    59 
    60 int main()
    61 {
    62     while(cin >> n, n)
    63     {
    64         int t, e, w;
    65         Init();
    66         for(int i=1; i<=n; i++)
    67         {
    68             cin >> t;
    69             for(int j=0; j<t; j++)
    70             {
    71                 cin >> e >> w;
    72                 G[i][e] = min(G[i][e],w);
    73             }
    74         }
    75 
    76         Floyd();
    77 
    78     }
    79     return 0;
    80 }
  • 相关阅读:
    SocketChannel 例子(转)
    多态(Polymorphism)的实现机制(上)--C++篇
    多态(Polymorphism)的实现机制(下)--Java篇
    java volatitle 多线程问题
    线程BlockingQueue (转)
    java 多态,和方法覆盖分析(转)
    MFC 调试技巧
    strlen与sizeof区别(转载)
    杭电1048
    杭电2013
  • 原文地址:https://www.cnblogs.com/chenchengxun/p/4145994.html
Copyright © 2011-2022 走看看