1. 程式人生 > >AOJ 0189(最短路)

AOJ 0189(最短路)

iomanip code stack ack != eof lse pac urn

 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 }

AOJ 0189(最短路)