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;
}
#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;
}
浙公网安备 33010602011771号