রবিবার, ১৯ ফেব্রুয়ারী, ২০১৭

UVA 821 - Page Hopping

#include <stdio.h>
#include <string.h>
#include<bits/stdc++.h>
using namespace std;
long mp[110][110],i,k,j;
long floyd()
{
    for(k=0; k<101; k++)
    {
        for(i=0; i<101; i++)
        {
            for(j=0; j<101; j++)
            {
                mp[i][j]=min(mp[i][j],(mp[i][k]+mp[k][j]));
            }
        }
    }
}
using namespace std;
int main()
{
    long long a,b,cs=1;
    while(cin>>a>>b)
    {
        set<long>st;
        for(i=0; i<101; i++)
        {
            for(j=0; j<101; j++)
            {
                if(i!=j)
                {
                    mp[i][j]=1000000;
                }
                else
                    mp[i][j]=0;
            }
        }
        if(a==0&&b==0)
            break;
        st.insert(a);
        st.insert(b);
        mp[a][b]=1;
        long long a1,b1,sum=0;
        while(cin>>a1>>b1)
        {
            if(a1==0&&b1==0)
                break;
            st.insert(a1);
            st.insert(b1);
            mp[a1][b1]=1;
        }
        floyd();
        for(i=0; i<101; i++)
        {
            for(j=0; j<101; j++)
            {
                if(i!=j&&mp[i][j]!=1000000)
                {
                    sum=sum+mp[i][j];
                }
            }
        }
        long len=st.size();
        len=len*(len-1);
        double ans=(double)sum/len;
        printf("Case %ld: average length between pages = ",cs++);
        printf("%.3lf clicks\n",ans);
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...