1. 程式人生 > >POJ 2139

POJ 2139

ret ios min color col for can iomanip ring

 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 n,m; 13 int map[350][350],a[350]; 14 int main(int argc, char *argv[]) 15 { 16 scanf("%d%d",&n,&m); 17 for(int i=0;i<=n;i++) 18 for(int j=0;j<=n;j++) 19 { 20 if(i==j) 21 map[i][j]=0; 22 else 23 map[i][j]=1e9; 24 }
25 for(int i=0;i<m;i++) 26 { 27 int t; 28 scanf("%d",&t); 29 for(int j=0;j<t;j++) 30 { 31 scanf("%d",&a[j]); 32 for(int k=0;k<j;k++) 33 { 34 map[a[k]][a[j]]=map[a[j]][a[k]]=1; 35 }
36 } 37 } 38 for(int k=1;k<=n;k++) 39 for(int i=1;i<=n;i++) 40 for(int j=1;j<=n;j++) 41 if(map[i][j]>map[i][k]+map[k][j]) 42 map[i][j]=map[i][k]+map[k][j]; 43 int sum=1e9; 44 for(int i=1;i<=n;i++) 45 { 46 int sum1=0; 47 for(int j=1;j<=n;j++) 48 { 49 if(j!=i) 50 sum1+=map[i][j]; 51 } 52 sum=min(sum,sum1); 53 } 54 double sum3=sum*100/(n-1); 55 printf("%d\n",(int)sum3); 56 return 0; 57 }

POJ 2139