码迷,mamicode.com
首页 > 其他好文 > 详细

AOJ -0189 Convenient Location (任意两点间的最短路)

时间:2015-05-13 18:39:24      阅读:533      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=78207

看懂题就好。

求某一办公室到其他办公室的最短距离。

多组输入,n表示n条关系,下面n次每次输入 x y d表示x到y的距离是d。

输出办公室的编号和距离。

因为 顶点数小于10,直接floyed求出所有距离之后,枚举出最短距离即可。

 1 /* ***********************************************
 2 Author        : zch
 3 Created Time  :2015/5/13 12:47:27
 4 File Name     :AOJ -0189 Convenient Location
 5  ************************************************ */
 6 
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <iostream>
10 #include <algorithm>
11 #include <vector>
12 #include <queue>
13 #include <set>
14 #include <map>
15 #include <string>
16 #include <cmath>
17 #include <cstdlib>
18 #include <ctime>
19 using namespace std;
20 const int maxn = 11;
21 const int INF = 0xfffffff;
22 int d[maxn][maxn];
23 int n;
24 void init()
25 {
26     n=0;
27     for(int i=0; i<maxn; i++)
28         for(int j=0; j<maxn; j++)
29             if(i==j) d[i][j]=0;
30             else d[i][j]=INF;
31 
32 }
33 void floyd()
34 {
35     for(int k=0; k<n; k++)
36         for(int i=0; i<n; i++)
37             for(int j=0; j<n; j++)
38                 d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
39 }
40 
41 int main()
42 {
43     //freopen("a.txt","r",stdin);
44     //freopen("b.txt","w",stdout);
45     int m,a,b,c;
46     while(~scanf("%d",&m)&&m)
47     {
48         init();
49         for(int i=0; i<m; i++)
50         {
51             scanf("%d%d%d",&a,&b,&c);
52             d[a][b]=d[b][a]=c;
53             n=max(n,max(a,b)+1);
54         }
55         //printf("%d\n",n);
56         floyd();
57         int sum=0,id=0,cnt=INF;
58         for(int i=0; i<n; i++)
59         {
60             sum=0;
61             for(int j=0; j<n; j++)
62             {
63                 sum+=d[i][j];
64             }
65             if(sum<cnt)
66             {
67                 cnt=sum;
68                 id=i;
69             }
70         }
71         printf("%d %d\n",id,cnt);
72     }
73     return 0;
74 }

 

AOJ -0189 Convenient Location (任意两点间的最短路)

标签:

原文地址:http://www.cnblogs.com/nowandforever/p/4500726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!