</pre><pre name="code" class="cpp">#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 110;
int G[maxn][maxn], vis[maxn], v, u, kase;
int main(int argc, char const *argv[])
{
while (cin >> u >> v && u || v)
{
int mx = 0, sum = 0, n = 0;
memset(vis, 0, sizeof(vis));
memset(G, 0x3f, sizeof(G));
do
{
G[u][v] = vis[u] = vis[v] = 1;
mx = max(mx, max(u, v));
}
while (cin >> u >> v && u || v);
for (int k = 1; k <= mx; k++)
for (int i = 1; i <= mx; i++)
for (int j = 1; j <= mx; j++)
G[i][j] = min(G[i][j], G[i][k] + G[k][j]);
for (int i = 1; i <= mx; i++)
n += vis[i];
for (int i = 1; i <= mx; i++)
for (int j = 1; j <= mx; j++)
if (i != j && G[i][j] != INF)
sum += G[i][j];
cout << "Case " << ++kase << ": average length between pages = " << setprecision(3) << fixed << sum / (n * (n - 1.0)) << " clicks" << endl;
}
return 0;
}
uva 821 floyd
最新推荐文章于 2019-06-07 11:34:11 发布