POJ 2139 Six Degrees of Cowvin Bacon

来源:互联网 发布:ubuntu安装postgresql 编辑:程序博客网 时间:2024/05/29 07:51

Floyd算法,求一个和他人平均距离最短的人的距离的均值(有点绕- -)。

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 305;const int INF = 1 << 29;int n, m, a[MAXN], f[MAXN][MAXN];int main(){while (scanf("%d%d", &n, &m) != EOF){for (int i = 1; i <= n; i++){f[i][i] = 0;for (int j = i + 1; j <= n; j++)f[i][j] = f[j][i] = INF;}for (int i = 0; i < m; i++){int cnt;scanf("%d", &cnt);for (int j = 0; j < cnt; j++){scanf("%d", &a[j]);for (int k = 0; k < j; k++)f[a[j]][a[k]] = f[a[k]][a[j]] = 1;}}for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)f[i][j] = min(f[i][j], f[i][k] + f[k][j]);int ans = INF;for (int i = 1; i <= n; i++){int dist = 0;for (int j = 1; j <= n; j++)if (i != j)dist += f[i][j];ans = min(ans, dist);}printf("%d\n", ans * 100 / (n - 1));}}


0 0
原创粉丝点击