#include<cstdio>
#include<iostream>
#include<cstring>
#define Infinity 1000000
#define MAX 100
using namespace std;
double mat[MAX+5][MAX+5],sum,counter;
int i,j,k,a,b,c,d,maximum,maximum1;
void Floyd()
{
for(k=1; k<=maximum; k++)
{
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(mat[i][j]>mat[i][k]+mat[k][j])
{
mat[i][j]=mat[i][k]+mat[k][j];
}
}
}
}
}
int main()
{
int tc=0;
while(scanf("%d%d",&a,&b)==2)
{
if(a==0 && b==0)
{
break;
}
maximum=max(a,b);
mat[a][b]=1.0;
for(;;)
{
scanf("%d%d",&c,&d);
if(c==0 && d==0)
{
break;
}
maximum1=max(c,d);
maximum=max(maximum,maximum1);
mat[c][d]=1.0;
}
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(i!=j && mat[i][j]!=1)
{
mat[i][j]=Infinity;
}
}
}
Floyd();
sum=0.0;
counter=0.0;
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(mat[i][j]!=0.0 && mat[i][j]!=Infinity)
{
counter++;
sum+=mat[i][j];
}
}
}
printf("Case %d: average length between pages = %.3lf clicks\n",++tc,sum/counter);
memset(mat,0.0,sizeof(mat));
}
return 0;
}
#include<iostream>
#include<cstring>
#define Infinity 1000000
#define MAX 100
using namespace std;
double mat[MAX+5][MAX+5],sum,counter;
int i,j,k,a,b,c,d,maximum,maximum1;
void Floyd()
{
for(k=1; k<=maximum; k++)
{
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(mat[i][j]>mat[i][k]+mat[k][j])
{
mat[i][j]=mat[i][k]+mat[k][j];
}
}
}
}
}
int main()
{
int tc=0;
while(scanf("%d%d",&a,&b)==2)
{
if(a==0 && b==0)
{
break;
}
maximum=max(a,b);
mat[a][b]=1.0;
for(;;)
{
scanf("%d%d",&c,&d);
if(c==0 && d==0)
{
break;
}
maximum1=max(c,d);
maximum=max(maximum,maximum1);
mat[c][d]=1.0;
}
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(i!=j && mat[i][j]!=1)
{
mat[i][j]=Infinity;
}
}
}
Floyd();
sum=0.0;
counter=0.0;
for(i=1; i<=maximum; i++)
{
for(j=1; j<=maximum; j++)
{
if(mat[i][j]!=0.0 && mat[i][j]!=Infinity)
{
counter++;
sum+=mat[i][j];
}
}
}
printf("Case %d: average length between pages = %.3lf clicks\n",++tc,sum/counter);
memset(mat,0.0,sizeof(mat));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment