POJ Six Degrees of Cowvin Bacon

来源:互联网 发布:维秘无日韩 知乎 编辑:程序博客网 时间:2024/06/09 11:53

刷点水题,调整一下心情

//276K 16MS#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int INF = 0x7fffffff;const int maxn = 300;int d[maxn+5][maxn+5];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++){                if(d[i][k] != INF && d[k][j] != INF)                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);            }        }    }}int main(){    while(scanf("%d%d", &n, &m) != EOF){        for(int i=1; i<=n; i++)            for(int j=1; j<=n; j++)            d[i][j] = (i == j ? 0 : INF);        while(m--){            int num, a[maxn+5];            scanf("%d", &num);            for(int i=1; i<=num; i++)                scanf("%d", &a[i]);            for(int i=1; i<=num-1; i++){                for(int j=i+1; j<=num; j++){                    d[a[i]][a[j]] = d[a[j]][a[i]] = 1;                }            }        }        floyd();        int res = INF;        for(int i=1; i<=n; i++){            int sum = 0;            for(int j=1; j<=n; j++){                if(j != i) sum += d[i][j];            }            res = min(res, sum);        }        printf("%d\n", res*100/(n-1));    }    return 0;}


 

0 0
原创粉丝点击