AOJ 0189(最短路)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <algorithm>
 6 #include <queue>
 7 #include <stack>
 8 #include <vector>
 9 #include <iomanip>
10 #include <climits>
11 using namespace std;
12 int m;
13 int map[205][205],vis[200];
14 int main(int argc, char *argv[])
15 {
16     while(scanf("%d",&m)!=EOF)
17     {
18         if(m==0)
19         break;
20         for(int i=0;i<200;i++)
21         {
22             vis[i]=0;
23             for(int j=0;j<200;j++)
24             {
25                 if(i==j)
26                 map[i][j]=0;
27                 else
28                 map[i][j]=1e9;
29             }
30         }
31         int n=0;
32         for(int i=0;i<m;i++)
33         {
34             int x,y,z;
35             scanf("%d%d%d",&x,&y,&z);
36             n=max(n,max(x,y));
37             if(map[x][y]>z)
38             map[x][y]=map[y][x]=z;
39         }
40         for(int k=0;k<=n;k++)
41             for(int i=0;i<=n;i++)
42                 for(int j=0;j<=n;j++)
43                     if(map[i][j]>map[i][k]+map[k][j])
44                         map[i][j]=map[i][k]+map[k][j];
45         int sum=1e9,k=-1;
46         for(int i=0;i<=n;i++)
47         {
48             int sum1=0;
49             for(int j=0;j<=n;j++)
50             {
51                 if(j!=i&&map[i][j]!=1e9)
52                 sum1+=map[i][j];
53             }
54             if(sum1<sum)
55             {
56                 sum=sum1;
57                 k=i;
58             }
59         }
60         printf("%d %d\n",k,sum);
61         
62     }
63     
64     return 0;
65 }

猜你喜欢

转载自www.cnblogs.com/huluxin/p/9782661.html
今日推荐