AOJ 0189(最短路)

Posted huluxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
",k,sum);
61         
62     }
63     
64     return 0;
65 }

 

以上是关于AOJ 0189(最短路)的主要内容,如果未能解决你的问题,请参考以下文章

Aizu0189 Convenient Location(多源最短路)

aoj2249 最短路中的双权值问题

AOJ2249 最短路+最小花费(双权值)

AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)(代码

AOJ 2249 Road Construction (dijkstra)

AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)