poj 2139

#include<iostream>
#include<fstream>

using namespace std;

int map[301][301];
int n,m;
int a[301];

void read(){
//    ifstream cin("in.txt");
    int i,j,k,s,t;
    cin>>n>>m;
    memset(map,-1,sizeof(map));
    for(i=1;i<=m;i++)
    {
        cin>>k;
        for(j=1;j<=k;j++)
            cin>>a[j];
        for(s=1;s<=k;s++)
            for(t=s+1;t<=k;t++)
            {
                map[a[s]][a[t]]=1;
                map[a[t]][a[s]]=1;
            }
    }
    for(k=1;k<=n;k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(map[i][k]!=-1&&map[k][j]!=-1)
                {
                    if(map[i][j]!=-1)
                    map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
                    else
                        map[i][j]=map[i][k]+map[k][j];
                }
    int ans=10000000;
    for(i=1;i<=n;i++)
    {
        k=0;
        for(j=1;j<=n;j++)
            if(i!=j)
                k+=map[i][j];
        ans=min(ans,k);
    }
    cout<<100*ans/(n-1)<<endl;
}

int main(){
    read();
    return 0;
}

posted on 2011-06-01 17:06  宇宙吾心  阅读(327)  评论(0)    收藏  举报

导航