UVA Page Hopping(Floyd算法)
来源:互联网 发布:统计学数据分析方法 编辑:程序博客网 时间:2024/06/05 02:56
题意:
给出若干个点, 求出每对点之间距离的最小平均值。
解题思路:
直接Floyd求出所有点两两之间最短路径累和即可。
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=762
#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<cctype>#include<list>#include<iostream>#include<map>#include<queue>#include<set>#include<stack>#include<vector>using namespace std;#define FOR(i, s, t) for(int i = (s) ; i <= (t) ; ++i)#define REP(i, n) for(int i = 0 ; i < (n) ; ++i)int buf[10];inline long long read(){ long long x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f;}inline void writenum(int i){ int p = 0; if(i == 0) p++; else while(i) { buf[p++] = i % 10; i /= 10; } for(int j = p - 1 ; j >= 0 ; --j) putchar('0' + buf[j]);}/**************************************************************/#define MAX_N 110const int INF = 0x3f3f3f3f;int G[MAX_N][MAX_N];map<int, int> mp;int main(){ int n, m; int cas = 1; while(~scanf("%d%d", &n, &m) && (n + m)) { memset(G, INF, sizeof(G)); for(int i = 0 ; i < MAX_N ; i++) G[i][i] = 0; mp.clear(); int t = 0; if(!mp.count(n)) { mp[n] = t++; } if(!mp.count(m)) { mp[m] = t++; } int u = mp[n]; int v = mp[m]; G[u][v] = 1; while(scanf("%d%d", &n, &m) && (n + m)) { if(!mp.count(n)) { mp[n] = t++; } if(!mp.count(m)) { mp[m] = t++; } int u = mp[n]; int v = mp[m]; G[u][v] = 1; } int cnt = mp.size(); int sum = 0; for(int k = 0 ; k < cnt ; k++) for(int i = 0 ; i < cnt ; i++) for(int j = 0 ; j < cnt ; j++) { G[i][j] = min(G[i][j], G[i][k] + G[k][j]); } for(int i = 0 ; i < cnt ; i++) for(int j = 0 ; j < cnt ; j++) { sum += G[i][j]; } double ans = (sum + 0.0)/ (cnt * (cnt - 1)); printf("Case %d: average length between pages = %.3f clicks\n", cas++, ans); } return 0;}
0 0
- UVA Page Hopping(Floyd算法)
- UVA - 821 - Page Hopping(floyd算法)
- 【UVA】821-Page Hopping(Floyd)
- UVa 821- Page Hopping(Floyd)
- UVA 821 Page Hopping (Floyd)
- uva821 Page Hopping( Floyd )
- 821 - Page Hopping (Floyd)
- uva 821 Page Hopping 最短路floyd
- [floyd]UVa821 - Page Hopping
- UVA 821 Page Hopping(最短路)
- Uva 821 - Page Hopping
- UVa 821 - Page Hopping
- Page Hopping UVA
- UVa 10801 Lift Hopping / floyd
- Lift Hopping - UVa 10801 Floyd
- Lift Hopping, UVa 10801【Floyd】
- UVA 821(p379)----Page Hopping
- UVa 10801 - Lift Hopping (Floyd, Dijkstra, SPFA三合一)
- ps2015安装guideguide参考线辅助工具
- 浅谈Hybrid技术的设计与实现
- Android 用命令行安装应用到手机
- JDK类Object、Number
- nyoj 116 士兵杀敌(二)【线段树】区间求和
- UVA Page Hopping(Floyd算法)
- Qt 简介
- Java Servlet API中文说明文档
- 《禅者的初心》读书笔记(1)
- hdu1215 七夕节 (预处理,求x的因子和)
- nyoj--236--心急的C小加(动态规划&&LIS)
- 常用的sql查询语句
- 如何从菜鸟成长成spark大数据高手(转载+自我笔记)
- C#窗体实例:记事本