首页 > 其他 > 详细

poj 1125

时间:2015-05-17 18:22:40      阅读:211      评论:0      收藏:0      [点我收藏+]

题意:股票经纪人要在人群中传播谣言,给出有联系的两个人及谣言在他们之间传播的时间,让你求出谣言从某个人开始传播至所有人所需的最短时间,以及这个人是第几个人

folyd算法

java代码

 1 import java.util.Scanner;
 2 import java.util.Arrays;
 3 
 4 public class Main{
 5     static int INF = 0x3f3f3f3f;
 6     
 7     public static void main(String[] args){
 8         int T;
 9         Scanner in = new Scanner(System.in);
10         while(in.hasNext()){
11             T = in.nextInt();
12             if(T==0)
13                 break;
14             int map[][] = new int[T+1][T+1];
15 
16             for(int i=0;i<=T;i++)
17                 Arrays.fill(map[i],INF);
18             
19             for(int i=1;i<=T;i++){
20                 int m=in.nextInt();
21                 for(int j=1;j<=m;j++){
22                     int u=in.nextInt();
23                     int w = in.nextInt();
24                     map[i][u] = w;
25                 }
26             }
27             
28             for(int k=1;k<=T;k++)
29                 for(int i=1;i<=T;i++)
30                     for(int j=1;j<=T;j++)
31                         if(k!=i&&i!=j&&map[i][k]+map[k][j]<map[i][j])
32                             map[i][j] = map[i][k]+map[k][j];
33             
34             int min = INF;
35             int s=0;
36             for(int i=1;i<=T;i++){
37                 int max = 0;
38                 for(int j=1;j<=T;j++){
39                     if(i!=j&&map[i][j]>max)
40                         max = map[i][j];
41                 }
42                 if(min>max){
43                     min = max;
44                     s = i;
45                 }
46             }
47             if(min>=INF)
48                 System.out.println("disjoint");
49             else
50                 System.out.println(s+" "+min);
51         }
52     }
53 }

 

poj 1125

原文:http://www.cnblogs.com/yong-hua/p/4509943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!