UVA 821 Page Hopping 网页跳跃(BFS,简单)
题意:
给一个无权有向图,可认为边的长度为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,简单)的更多相关文章
- UVa 821 Page Hopping【Floyd】
题意:给出一个n个点的有向图,任意两个点之间都相互到达,求任意两点间最短距离的平均值 因为n很小,所以可以用floyd 建立出图,然后用floyd,统计d[][]不为0且不为INF的边的和及条数,就可 ...
- UVa 821 Page Hopping
题意: 给出一个有向图,求所有路径(两点间的最短路径)的平均值. 分析: 用floyd求两点间的最短距离,然后求平均就好. 代码: #include <iostream>#include ...
- 解读Web Page Diagnostics网页细分图
解读Web Page Diagnostics网页细分图 http://blog.sina.com.cn/s/blog_62b8fc330100red5.html Web Page Diagnostic ...
- UVA 11248 - Frequency Hopping(网络流量)
UVA 11248 - Frequency Hopping 题目链接 题意:给定一个网络,如今须要从1到N运输流量C,问是否可能,假设可能输出可能,假设不可能,再问能否通过扩大一条边的容量使得可能,假 ...
- uva 11248 Frequency Hopping (最大流)
uva 11248 Frequency Hopping 题目大意:给定一个有向网络,每条边均有一个容量. 问是否存在一个从点1到点N.流量为C的流.假设不存在,能否够恰好改动一条弧的容量,使得存在这种 ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- BFS简单题套路_Codevs 1215 迷宫
BFS 简单题套路 1. 遇到迷宫之类的简单题,有什么行走方向的,先写下面的 声明 ; struct Status { int r, c; Status(, ) : r(r), c(c) {} // ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析
转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...
- 一篇文章带你了解网页框架——Vue简单入门
一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...
随机推荐
- CSS:在input、pre中左边加上一个图标(一行和多行)
前言 接触过EasyUI的朋友都知道其警告框就是左边有个三角警告图标,此文所做的效果正是这样.此外,还将示例多行的做法. 一.在input左边加上一个图标(一行) 注:left center定义了图标 ...
- Linux/Ubuntu常用快捷键
问题描述: Linux/Ubuntu常用快捷键 问题解决: +++++++++++++++++++ 全局系统 +++++++++++++++++++++ Alt + F1:相当于w ...
- contentType,pageEncoding,charset,setCharacterEncoding
contentType,pageEncoding,charset,setCharacterEncoding HTML中的meta标签,以及HTTP Header. -------------字符集.字 ...
- How do you design object oriented projects?
what are things you do during the high level design phase (before you begin programming) to determin ...
- mySql 自动备份数据库
mysqldump -u root -proot -h 192.168.1.100 xqpd > 1.sqlcopy 1.sql D:\项目备份\工程_数据库-%date:~0,4%%date: ...
- [YY题]HDOJ5288 OO’s Sequence
题意:求这个式子 $\sum \limits_{i=1}^{n} \sum \limits_{j=1}^{m} f(i, j) mod (10^9 + 7)$ 的值 就是对每个区间[i, j]枚举区间 ...
- java split IP地址要用双斜杠
示例代码: public void test() { String address = "11.12.13.14:800"; System.out.println(address. ...
- Protege A DOT error has occurred错误
问题参生的原因:graphviz没有安装或者,没有配置好 解决方法: 1.下载graphviz,这里是百度软件下载的,在官网下载需要注册账户,麻烦 2.安装graphviz,找到下面的路径. 3.设置 ...
- TCL语言笔记:TCL中的控制结构命令
一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...
- Android:ViewPager制作幻灯片
布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:androi ...