POJ 1125 Stockbroker Grapevine

题目链接http://poj.org/problem?id=1125

最短路的题目。此题的题意是相当蛋疼啊。来看翻译下输入输出

输入 
你的程序包含多组股票经纪人的输入数据。每组以股票经纪人的人数开始。接下来的几行是每个经纪人与其他人接触的一些信息,包括这些人都是谁,以及将讯息传达到他们所需的时间。每个经纪人与其他人接触信息的格式如下:开头的第一个数表示共有n个联系人,接下来就有n对整数。每对整数列出的第一个数字指的是一个联系人(例如,一个'1'是指编号1的人),其次是在传递一个信息给那个人时所采取分钟的时间。没有特殊的标点符号或空格规则。 
每个人的编号为1至经纪人数目。所花费的传递时间是从1到10分钟(含10分种)。股票经纪的人数范围是从1到100。当输入股票经纪人的人数为0时,程序终止。 
输出 
在对于每一组数据,你的程序必须输出一行,包括的信息有传输速度最快的人,以及在最后一个人收到消息后,所总共使用的时间(整数分钟计算)。 
你的程序可能会收到的一些关系会排除一些人,也就是有些人可能无法访问。如果你的程序检测到这样一个破碎的网络,只需输出消息“disjoint”。请注意,所花费的时间是从A传递消息到B,B传递信息到A不一定是花费同样的传递时间,但此类传播也是可能的。

其实看到这还是不明白的。 其实让求的是最短路中距离最大的。就第一组数据。经过一边Floyd后。

是这样的。 第一行的最大值 5,第二行的 6,第三行的 2  。。哪一行的最小?第三行 所以输出3.然后输出的是行最大值的最小值。

Floyd

View Code
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 long map[310][310];
 5 int main()
 6 {
 7     int a,b,n,m,t,i,j,k;
 8     while(~scanf("%d",&t))
 9     {
10         int max=10000;
11         if(t==0)
12             break;
13         for(i=0;i<=t;i++)
14             for(j=0;j<=t;j++)
15                 map[i][j]=1000000;
16                 for(i=0;i<t;i++)
17                 map[i][i]=0;
18         for(i=1;i<=t;i++)
19         {
20             scanf("%d",&n);
21             for(j=1;j<=n;j++)
22             {
23                 scanf("%d%d",&a,&b);
24                 map[i][a]=b;
25             }
26         }
27         for(k=1;k<=t;k++)
28             for(i=1;i<=t;i++)
29                 for(j=1;j<=t;j++)
30                     if(map[i][j]>(map[i][k]+map[k][j]))
31                        map[i][j]=map[i][k]+map[k][j];
32         for(i=1;i<=t;i++)
33         {
34             int min=0;
35             for(j=1;j<=t;j++)
36             {
37                 if(i!=j&&map[i][j]>min)
38                     min=map[i][j];
39             }
40             if(min<max)
41             {
42                 max=min;
43                 m=i;
44             }
45         }
46         if(max<10000)
47             printf("%d %d\n",m,max);
48         else
49             puts("disjoint");
50     }
51     return 0;
52 }
原文地址:https://www.cnblogs.com/timeship/p/2640756.html