您的位置:首页 > 运维架构

UVa 821 - Page Hopping

2016-02-16 18:15 316 查看
题意,给出有向图,给定的节点之间长度为1,求出平均长度,既所有道路长度和/道路数量

分析:节点的个数最多为100个,那么直接floyd求就可以了,但是没有给出最大的节点n,需要自己求

#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
const int INF=1e7+5;

int m[maxn][maxn];

int main(){
int a,b,n,cas=1;
while(~scanf("%d%d",&a,&b)&&a+b){
n=-1;
for(int i=0;i<maxn;i++)
for(int j=0;j<maxn;j++)
m[i][j]=INF;
for(int i=0;i<maxn;i++)
m[i][i]=0;
do{
m[a][b]=1;
n=max(max(a,b),n);
}while(~scanf("%d%d",&a,&b)&&a+b);
n++;
for(int k=1;k<n;k++)
for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
if(m[i][j]>m[i][k]+m[k][j])
m[i][j]=m[i][k]+m[k][j];
int sum=0,count=0;

for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
if(m[i][j]<INF&&m[i][j]){
count++;
sum+=m[i][j];
}
printf("Case %d: ",cas++);
printf("average length between pages = %.3lf clicks\n",1.0*sum/count);
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: