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(多源最短路)
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算法求单源最短路径,邻接表)