POJ 2253 Frogger
来源:互联网 发布:javascript 设置css 编辑:程序博客网 时间:2024/06/10 00:36
题意:输入n(石头个数),再输入n个石头的坐标,求第一个石头到最后一个石头的最小生成树的总权值。
思路:Kruskal算法,这道题参考网上代码
1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>using namespace std;typedef long long ll;const int N = 300;const int M = 40005;const int INF = 0x3f3f3f3f;struct Node{ int x, y; double len;}q[M];int fa[M];int n, cnt;double X[N], Y[N];void init() { cnt = 0; for (int i = 0; i < M; i++) fa[i] = i; memset(X, 0, sizeof(X)); memset(Y, 0, sizeof(Y));}int find(int x) { return x == fa[x] ? x : fa[x] = find(fa[x]);}double getlen(int a, int b) { return sqrt((X[a] - X[b]) * (X[a] - X[b]) + (Y[a] - Y[b]) * (Y[a] - Y[b]));}int cmp(Node x, Node y) { return x.len < y.len;}void input() { for (int i = 0; i < n; i++) { scanf("%lf %lf", &X[i], &Y[i]); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) continue; q[cnt].x = i; q[cnt].y = j; q[cnt++].len = getlen(i, j); } }}double kruskal() { sort(q, q + cnt, cmp); double ans = 0; for (int i = 0; i < cnt; i++) { int x = find(q[i].x), y = find(q[i].y); if (x != y) { fa[x] = y; if (find(0) == find(1)) { ans = q[i].len; break; } } } return ans;}int main() { int Case = 1; while (scanf("%d", &n) != EOF, n) { printf("Scenario #%d\n", Case++); init(); input(); printf("Frog Distance = "); printf("%.3f\n\n", kruskal()); } return 0;}
0 0
- poj 2253 - Frogger --- SPFA
- poj 2253 - Frogger --- dijkstra
- POJ 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- POJ 2253 Frogger Floyd
- poj 2253 : Frogger (dijkstra)
- Poj 2253 Frogger
- POJ 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj 2253 Frogger
- poj-2253-Frogger
- POJ 2253 Frogger
- POJ 2253 Frogger
- POJ 2253 Frogger
- NYOJ 26 最长公共子序列
- HDU 5289-B - Assignment-贪心
- 1097
- 操作系统---精髓与设计原理 之 计算机系统概述
- 读写Excel数据
- POJ 2253 Frogger
- 字典树模版
- 生活在这个看脸看看身材的时代、莫做黄脸婆
- HDU 5083 Instruction(大模拟)
- 如何读写二进制文件
- android apk文件安装
- 生产汽车(单调队列+斜率优化)
- 强引用,软引用与弱引用
- Android 各种实现Tab效果的实现方式