UVA Page Hopping(Floyd算法)
2015-11-11 22:19
501 查看
题意:
给出若干个点, 求出每对点之间距离的最小平均值。
解题思路:
直接Floyd求出所有点两两之间最短路径累和即可。
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=762
给出若干个点, 求出每对点之间距离的最小平均值。
解题思路:
直接Floyd求出所有点两两之间最短路径累和即可。
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=762
Memory: 0 KB | Time: 26 MS | |
Language: C++ 4.8.2 | Result: Accepted |
#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 110 const 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 = t++; } if(!mp.count(m)) { mp[m] = t++; } int u = mp ; int v = mp[m]; G[u][v] = 1; while(scanf("%d%d", &n, &m) && (n + m)) { if(!mp.count(n)) { mp = t++; } if(!mp.count(m)) { mp[m] = t++; } int u = mp ; 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; }
相关文章推荐
- linux 批量 替换 namespace缩进
- UVA 10048 Audiophobia(Floyd算法)
- 浅谈WebLogic和Tomcat
- Tomcat安装配置
- FileObserver真能监控文件变化?
- 第一节 Opencv3.0 mac下环境配置
- 25个国外优秀的餐饮网站设计作品欣赏
- Linux系统入门学习:在CentOS上安装phpMyAdmin
- Linux crontab命令
- 在Java中兼容Windows和Linux的路径处理
- 09 JobManager 高可用安装(HA)
- muduo库阅读(36)——Net部分:事件循环线程池EventLoopThreadPool
- nginx+tomcat集群高可用
- linux route命令的使用详解
- Linux下安装PHP
- linux——Shell的控制结构(附shell编写代码和运行结果)
- muduo库阅读(35)——Net部分:用于执行事件循环(EventLoop)的线程类EventLoopThread
- CentOS6.5 heartbeat高可用集群的详解及工作流程
- 遥感影像序列生成视频
- Top 和 LIMIT