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 }

 

你可能感兴趣的:(broker)