poj1125 Stockbroker Grapevine Floyd

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

主要是读懂题意

然后就很简单了

floyd算法的应用

代码:

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6 #define maxn 110
 7 #define INF 10000100
 8 int dis[maxn][maxn];
 9 int n;
10 int m;
11 void floyd()
12 {
13    for(int k=1;k<=n;k++)
14        {
15            for(int i=1;i<=n;i++)
16              for(int j=1;j<=n;j++)
17                {
18                     if(k==i || k==j) continue;
19                     if(dis[i][k]+dis[k][j]<dis[i][j])
20                         dis[i][j]=dis[i][k]+dis[k][j];
21                }
22        }
23 }
24 int main()
25 {
26      int a,b;
27     while(scanf("%d",&n)!=EOF && n)
28     {
29        for(int i=1;i<=n;i++)
30         for(int j=1;j<=n;j++)
31            if(i==j) dis[i][j]=0;
32            else dis[i][j]=INF;
33         for(int i=1;i<=n;i++)
34          {
35               scanf("%d",&m);
36               while(m--)
37               {
38                   scanf("%d%d",&a,&b);
39                   dis[i][a]=b;
40               }
41          }
42 
43          floyd();
44          int ans=INF;
45          int t,tmp;
46          for(int i=1;i<=n;i++)
47          {
48              tmp=0;
49              for(int j=1;j<=n;j++)
50              {
51                      if(j!=i && dis[i][j]>tmp)
52                             tmp=dis[i][j];
53              }
54              if(tmp<ans)
55              {
56                ans=tmp;
57                t=i;
58              }
59 
60              
61          }
62          cout<<t<<" "<<ans<<endl;
63     }
64     return 0;
65 }

 

posted on 2013-10-24 19:23  GyyZyp  阅读(110)  评论(0编辑  收藏  举报

导航