题目:http://poj.org/problem?id=2139
题意:奶牛们最近要拍电影了(ACM真是各种奶牛。。。)
1、若两个的奶牛一起工作则,他们相互的度(degrees)为1;
2、若两只奶牛a、b不一起工作,但与另有一只奶牛都和他们工作,则a、b的相互的度为2。
求奶牛的与其他奶牛的度的平均值的一百倍的整数。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn = 310,maxm = 10010,INF = 0x3f3f3f3f;
int d[maxn][maxn],t[maxm];
int N, M;
void floyd()
{
for(int k = 1; k <= N; k++)
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
d[i][j] = min(d[i][j], d[i][k]+d[k][j]);
}
int main()
{
while(scanf("%d%d", &N, &M) != EOF)
{
memset(d, 0x3f, sizeof(d));
int n;
for(int j = 0; j < M; j++)
{
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &t[i]);
for(int i = 0; i < n; i++)
for(int j = i+1; j < n; j++)
{
d[t[i]][t[j]] = 1;
d[t[j]][t[i]] = 1;
}
}
floyd();
int ans = INF;
for(int i = 1; i <= N; i++)
{
int sum = 0;
for(int j = 1; j <= N; j++)
if(i != j)
sum += d[i][j];
ans = min(ans, sum);
}
printf("%d\n", ans*100/(N-1));
}
return 0;
}