zoukankan      html  css  js  c++  java
  • Uva821-Floyd

    计算所有页面的平均距离。

    用floyd求距离,再求平均

    #include <algorithm>
    #include <cstring>
    #include <ctype.h>
    #include <cstdlib>
    #include <cstdio>
    #include <vector>
    #include <string>
    #include <queue>
    #include <stack>
    #include <cmath>
    #include <set>
    #include <map>
    
    using namespace std;
    
    const int maxn = 110;
    const int INF = 100000;
    
    int N,M,T;
    int d[maxn][maxn];
    set <int> pages;
    
    int main()
    {
        int a,b;
        while(scanf("%d%d",&a,&b) && a&&b)
        {
            T++;
            N = 0;
            pages.clear();
            pages.insert(a);
            pages.insert(b);
    
            for(int i=0;i<maxn;i++)
                for(int j=0;j<maxn;j++)
                    d[i][j] = ( i==j ? 0 : INF);
    
            N = max(a,b);
            d[a][b] = 1;
    
            while(scanf("%d%d",&a,&b) && a && b)
            {
                d[a][b] = 1;
                N = max(N,max(a,b));
                pages.insert(a);
                pages.insert(b);
            }
    
            for(int k=1;k<=N;k++)
                for(int i=1;i<=N;i++)
                    for(int j=1;j<=N;j++)
                        d[i][j] = min(d[i][j],d[i][k] + d[k][j]);
    
            int sum = 0;
            for(int i=1;i<=N;i++)
                for(int j=1;j<=N;j++)
                {
                    if(d[i][j] < INF) sum+=d[i][j];
                }
            N = (int)pages.size();
            double ans = double(sum) / double(N*(N-1));
            printf("Case %d: average length between pages = %.3f clicks
    ",T,ans);
        }
    }
  • 相关阅读:
    Shell 中的 expect 命令
    #每日日报#7.11
    #每日日报#7.10
    #每日日报#7.09
    #每日日报#7月8日
    每日日报2020.7.17
    每日日报2020.7.16
    每日日报2020.7.15
    每日日报2020.7.14
    每日日报2020.7.13
  • 原文地址:https://www.cnblogs.com/helica/p/4892381.html
Copyright © 2011-2022 走看看