题目大意:有n头牛,如果两头牛同拍一部电影,这他们之间的距离为一,如果两头牛都和第三头牛拍过同一部电影,那么它们之间的距离经第三头牛传递就为2,,,求那一头牛与其它牛距离的平均值最小,把他乘一百输出。(求的时候,先扩大一百倍再求平均值)
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int oo=1e9+1;
int a[305][305];
void prepare()
{
for(int i=0;i<305;i++)
for(int j=0;j<305;j++)
if(i!=j)
a[i][j]=a[j][i]=oo;
}
int b[106];
int main()
{
int n,m,x;
while(~scanf("%d%d",&n,&m))
{
prepare();
while(m--)
{
scanf("%d",&x);
for(int i=0;i<x;i++)
scanf("%d",&b[i]);
for(int i=0;i<x;i++)
for(int j=i+1;j<x;j++)
a[b[i]][b[j]]=a[b[j]][b[i]]=1;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
int minn=oo;
for(int i=1;i<=n;i++)
{
int maxn=0;
for(int j=1;j<=n;j++)
maxn+=a[i][j];
minn=min(minn,100*maxn/(n-1));
}
printf("%d\n",minn);
}
return 0;
}