UVA - 821 - Page Hopping(floyd算法)
来源:互联网 发布:ntfs for mac 10.11.6 编辑:程序博客网 时间:2024/06/05 11:42
题意:用标号给定几个网站,一个标号(1~100)代表一个网站(标号的给定无连续性)。可以通过一个网站访问另一 个网站(通过给定的有向图路径),题目保证任意两个网站都有路到达且输入无自环,求每两个网站访问,最少 需要经过几个网站的个数平均值。
先重整标号使其有序,再用floyd算法求出每两个的最短路,最后统计即可。
#include<cstdio>#include<cstring>#include<cctype>#include<cstdlib>#include<cmath>#include<iostream>#include<sstream>#include<iterator>#include<algorithm>#include<string>#include<vector>#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<list>typedef long long ll;typedef unsigned long long llu;const int MAXN = 100 + 10;const int MAXT = 10000 + 10;const int INF = 0x7f7f7f7f;const double pi = acos(-1.0);const double EPS = 1e-6;using namespace std;int lur;double g[MAXN][MAXN];map<int, int> mp;int getid(int x){ if(mp.count(x)) return mp[x]; return mp[x] = ++lur;}void floyd(){ for(int k = 1; k <= lur; ++k) for(int i = 1; i <= lur; ++i) for(int j = 1; j <= lur; ++j) g[i][j] = min(g[i][j], g[i][k] + g[k][j]);}void merge(int a, int b){ int x = getid(a), y = getid(b); g[x][y] = 1;}double solve(){ floyd(); double sum = 0, num = 0; for(int i = 1; i <= lur; ++i) for(int j = 1; j <= lur; ++j){ if(i == j) continue; num += 1, sum += g[i][j]; } return sum / num;}int main(){ int a, b, cas = 0; while(scanf("%d%d", &a, &b) == 2 && (a || b)){ for(int i = 0; i < MAXN; ++i) for(int j = 0; j < MAXN; ++j) g[i][j] = 1e9; mp.clear(); lur = 0; merge(a, b); while(scanf("%d%d", &a, &b) == 2 && (a || b)) merge(a, b); printf("Case %d: average length between pages = %.3lf clicks\n", ++cas, solve()); } return 0;}
0 0
- UVA - 821 - Page Hopping(floyd算法)
- UVA Page Hopping(Floyd算法)
- 【UVA】821-Page Hopping(Floyd)
- UVa 821- Page Hopping(Floyd)
- UVA 821 Page Hopping (Floyd)
- 821 - Page Hopping (Floyd)
- uva 821 Page Hopping 最短路floyd
- Uva 821 - Page Hopping
- UVa 821 - Page Hopping
- uva821 Page Hopping( Floyd )
- UVA 821 Page Hopping(最短路)
- UVA 821(p379)----Page Hopping
- [floyd]UVa821 - Page Hopping
- UVA 821 - Page Hopping (flody应用)
- 【Uva 821】Page Hopping 翻译+题解
- Page Hopping UVA
- UVa 10801 Lift Hopping / floyd
- Lift Hopping - UVa 10801 Floyd
- Linux
- 程序员面试金典,牛课网在线编程题目答案(1)
- 网络流刷题记录-最大流
- Realm快速入门攻略
- [leetcode] 【排序】 75. Sort Colors
- UVA - 821 - Page Hopping(floyd算法)
- HTML <i> 标签
- 第一个NDK程序
- 二叉树平衡树,插入新节点调整该子树的操作
- J2ee项目从0搭建(八):集成Mybatis、mybatis-generator代码生成、Oracle数据库
- BZOJ4621 Tc605
- 手机型号
- hdu3001(3进制状态压缩dp)
- java For android