UVA 534 - Frogger(kruskal扩展)
来源:互联网 发布:4g手机为什么用不了4g网络 编辑:程序博客网 时间:2024/05/16 10:44
UVA 534 - Frogger
题目链接
题意:给定一些点,现在要求一条路径从第一个点能跳到第二个点,并且这个路径上的最大距离是最小的
思路:利用kruskal算法,每次加最小权值的边进去,判断一下能否联通两点,如果可以了,当前权值就是答案复杂度为O(n^2log(n))
但是其实这题用floyd搞搞O(n^3)也能过啦。。不过效率就没上面那个方法优了
代码:
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int N = 205;struct Point {int x, y;void read() {scanf("%d%d", &x, &y);}} p[N];double dis(Point a, Point b) {int dx = a.x - b.x;int dy = a.y - b.y;return sqrt(dx * dx + dy * dy);}struct Edge {int u, v;double d;Edge() {}Edge(int u, int v) {this->u = u;this->v = v;d = dis(p[u], p[v]);}bool operator < (const Edge& c) const {return d < c.d;}} E[N * N];int n, en, parent[N];int find(int x) {return x == parent[x] ? x : parent[x] = find(parent[x]);}int main() {int cas = 0;while (~scanf("%d", &n) && n) {en = 0;for (int i = 0; i < n; i++) {parent[i] = i;p[i].read();for (int j = 0; j < i; j++)E[en++] = Edge(i, j);}sort(E, E + en);for (int i = 0; i < en; i++) {int pa = find(E[i].u);int pb = find(E[i].v);if (pa != pb)parent[pa] = pb;if (find(0) == find(1)) {printf("Scenario #%d\nFrog Distance = %.3lf\n\n", ++cas, E[i].d);break;}}}return 0;}
1 0
- UVA 534 - Frogger(kruskal扩展)
- Uva 534 - Frogger
- UVa 534 - Frogger
- UVa 534 Frogger (最小瓶颈路)
- UVA 534Frogger 【最小瓶颈树】
- uva 534 - Frogger(最小生成树)
- Frogger UVA 534(最小瓶颈路+floyd算法)
- POJ2253--Frogger--最小生成树Kruskal
- UVA 1395 Kruskal算法
- POJ 2253 Frogger Kruskal最小生成树求解
- POJ 2235 Frogger 最小生成树 Kruskal && Prim
- poj 2253 Frogger (kruskal+dijkstra+bellman-ford)
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- Frogger
- ubuntu nfs服务器
- Android 避免APP启动闪黑屏的解决办法(Theme和Style)
- OpengL球体跳跃前进例子
- php中defined与define()函数
- 素数的求解
- UVA 534 - Frogger(kruskal扩展)
- android线程更新UI界面
- poj3984~用bfs求最短路~同时记录路径
- Linux企业级项目实践之网络爬虫(2)——网络爬虫的结构与工作流程
- jconsole tomcat内存监控设置
- Android图形图像之常用绘图类
- MAC中设置android adb环境变量
- HDOJ 题目2159FATE(二维完全背包)
- 王自如与老罗的辩论赛谁赢了?!