POJ 2139

 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 }

 

posted @ 2018-10-13 14:00  huluxin  阅读(180)  评论(0编辑  收藏  举报