poj 1125Stockbroker Grapevine(最短路)

http://poj.org/problem?id=1125

题意很难懂 一个人可以同时向多个人传递信息 找出每个人向所有人传递完信息后的最大值 再找出这些最大值中的最小值 就是结果

View Code
 1 #include <iostream>
 2 #include<string.h>
 3 #include<cstdio>
 4 #define INF 0x3f3f3f
 5 using namespace std;
 6 int w[101][101];
 7 int main()
 8 {
 9     int i,j,k,n,m,t,v,w1,x;
10     while(scanf("%d",&t)&&t)
11     {
12         memset(w,INF,sizeof(w));
13         for(i = 1; i <= t; i++)
14         {
15             scanf("%d",&n);
16             while(n--)
17             {
18                 scanf("%d %d",&v,&w1);
19                 w[i][v] = w1;
20             }
21         }
22         for(i = 1 ; i <= t ; i++)
23         for(j = 1; j <= t ; j++)
24         for(k = 1 ; k <= t ; k++)
25         if(w[j][i]+w[i][k]<w[j][k])
26         w[j][k] = w[j][i]+w[i][k];
27         int min = INF,max;
28         for(i = 1 ; i <= t ; i++)
29         {
30             max = -1;
31             for(j = 1 ;j <= t ; j++)
32             if(i!=j&&max<w[i][j])
33             max = w[i][j];
34             if(min>max)
35             {
36                 min = max;
37                 x = i;
38             }
39         }
40         printf("%d %d\n",x,min);
41     }
42     return 0;
43 }
原文地址:https://www.cnblogs.com/shangyu/p/2628196.html