POJ 2139 Six Degrees of Cowvin Bacon (弗洛伊德最短路)

题意:奶牛拍电影,如果2个奶牛在同一场电影里演出,她们的合作度是1,如果ab合作,bc合作,ac的合作度为2,问哪一头牛到其他牛的合作度平均值最小再乘100

思路:floyd模板题

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
int f[705][705],a[705];

int read(){
    char ch=getchar();int f=1,t=0;
    while (ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=getchar();}
    while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();}
    return t*f;
}
int main(){
    int n,m;
    n=read();m=read();
   memset(f,0x3f3f3f3f,sizeof f);
for (int i=1;i<=m;i++){ int cnt=read(); for (int j=1;j<=cnt;j++) a[j]=read(); for (int j=1;j<=cnt;j++) for (int k=1;k<j;k++) f[a[j]][a[k]]=f[a[k]][a[j]]=1; } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) for (int k=1;k<=n;k++) f[j][k]=std::min(f[j][i]+f[i][k],f[j][k]); int mn=0x7fffffff; for (int i=1;i<=n;i++){ int s=0; for (int j=1;j<=n;j++) if (i!=j) s+=f[i][j]; if (s<mn) mn=s; } mn*=100; mn/=(n-1); printf("%d ",mn); }
原文地址:https://www.cnblogs.com/qzqzgfy/p/5536079.html