题意:

  给一个无权有向图,可认为边的长度为1,求两点间的平均长度(即所有点对的长度取平均),保留3位小数。保证任意点对都可达。

思路:

  简单题。直接穷举每个点,进行BFS求该点到其他点的距离。累加后除去边数即可。

 #include <bits/stdc++.h>
#define LL long long
#define pii pair<int,int>
#define INF 0x7f7f7f7f
using namespace std;
const int N=;
int g[N][N];
int dis[N]; map<int,int> mapp;
int BFS(int s,int n)
{
memset(dis,,sizeof(dis));
deque<int> que(,s);
dis[s]=INF;
int len=;
while(!que.empty())
{
len++;
int siz=que.size();
for(int i=; i<siz; i++)
{
int x=que.front();
que.pop_front();
for(int j=; j<=n; j++)
{
if(!dis[j] && g[x][j])
{
dis[j]=len;
que.push_back(j);
}
}
}
}
int ans=;
for(int i=; i<=n; i++) if(dis[i]<INF) ans+=dis[i];
return ans;
} double cal(int n)
{
int ans=;
for(int i=; i<=n; i++)
ans+=BFS(i, n);
return (double)ans/(n*(n-));
} int main()
{
freopen("input.txt", "r", stdin); int a, b, j=;
while()
{
mapp.clear();
memset(g,,sizeof(g));
int cnt=;
while(scanf("%d%d",&a,&b),a+b)
{
if(!mapp[a]) mapp[a]=++cnt;
if(!mapp[b]) mapp[b]=++cnt;
g[mapp[a]][mapp[b]]=;
}
if(!cnt) return ;
printf("Case %d: average length between pages = %.3f clicks\n", ++j, cal(cnt)); }
return ;
}

AC代码

UVA 821 Page Hopping 网页跳跃(BFS,简单)的更多相关文章

  1. UVa 821 Page Hopping【Floyd】

    题意:给出一个n个点的有向图,任意两个点之间都相互到达,求任意两点间最短距离的平均值 因为n很小,所以可以用floyd 建立出图,然后用floyd,统计d[][]不为0且不为INF的边的和及条数,就可 ...

  2. UVa 821 Page Hopping

    题意: 给出一个有向图,求所有路径(两点间的最短路径)的平均值. 分析: 用floyd求两点间的最短距离,然后求平均就好. 代码: #include <iostream>#include ...

  3. 解读Web Page Diagnostics网页细分图

    解读Web Page Diagnostics网页细分图 http://blog.sina.com.cn/s/blog_62b8fc330100red5.html Web Page Diagnostic ...

  4. UVA 11248 - Frequency Hopping(网络流量)

    UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...

  5. uva 11248 Frequency Hopping (最大流)

    uva 11248 Frequency Hopping 题目大意:给定一个有向网络,每条边均有一个容量. 问是否存在一个从点1到点N.流量为C的流.假设不存在,能否够恰好改动一条弧的容量,使得存在这种 ...

  6. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  7. BFS简单题套路_Codevs 1215 迷宫

    BFS 简单题套路 1. 遇到迷宫之类的简单题,有什么行走方向的,先写下面的 声明 ; struct Status { int r, c; Status(, ) : r(r), c(c) {} // ...

  8. 深度优先搜索DFS和广度优先搜索BFS简单解析

    转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...

  9. 一篇文章带你了解网页框架——Vue简单入门

    一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...

随机推荐

  1. vc终端输入结束符

    操作系统使用不同的值作为文件结束符.Windows上我们通过键入ctrl+z键作为文件结束符.Unix系统中,包括Mac OS-X机器,通常用ctrl+d作为文件结束符.用VC++6.0的时候,要输入 ...

  2. 【BZOJ】【2223】【COCI 2009】PATULJCI

    可持久化线段树 同BZOJ 3524,但是不要像我一样直接贴代码……TAT白白WA了一次,so sad /*********************************************** ...

  3. 【HDOJ】【2089】不要62

    数位DP cxlove基础数位DP第一题 用容斥把所有的不吉利数字去掉就得到吉利数字的数量= =(满足区间减法) //HDOJ 2089 #include<cmath> #include& ...

  4. SSL 握手过程

    SSL协议的握手过程 SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术.SSL 的握手协议非常有效的让客户和服务器 ...

  5. Rsyslog配置

    http://blog.itpub.net/30015039/viewspace-1457009/

  6. hdu 1271 整数对

    看了别人的解题报告a了, 大致思路就是 A=a+b*10^k+c*10^(k+1) B=a+c*10^k (在A中取出一位数后) N=A+B=2*a+b*10^k+11*c*10^k 这样就好做了,再 ...

  7. Lambda Action Func练习

    namespace lambda { delegate void TestDelegate(string s); class Program { static void Main(string[] a ...

  8. hadoop:could only be replicated to 0 nodes, instead of 1

    在Hadoop的环境搭建过程中,常常会遇到类似这样的错误信息提示:“could only be replicated to 0 nodes, instead of 1 ”,产生这样的错误原因有多种,这 ...

  9. 【tyvj】P1049 最长不下降子序列

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数 第二行n个数 输出格式 最长不下降子序列的长度 测 ...

  10. Android:查看应用创建的数据库

    每个Android应用程序都可以使用SQLite数据库.它创建的位置在data/data/<项目文件夹>/databases/ 运行后打开,window->show view-> ...