题目链接:poj 2236 Wireless Network
题目大意:在一次地震过后,机房的电脑全部损坏了,给出n台电脑的坐标,以及有的连接线的长度d,现在进行若干次操作,O x 表示将x号电脑修好,那么就可以与离这台电脑的距离小于d并且已经修好过的电脑相连;S x 检查x和y是否联通。
解题思路:首先将每台电脑可以联通到的电脑先预处理出来,然后在开一个标记数组表示哪些电脑被修好了。每修好一个电脑后就将该电脑与周围可以联通并且修好的电脑联通。
#include <stdio.h>
#include <string.h>
#include <math.h>
const int N = 1005;
const double eps = 1e-9;
struct point {
double x, y;
}p[N];
int n, g[N][N], c[N], f[N], v[N];
double d;
int getfar(int x) {
return x == f[x] ? x : f[x] = getfar(f[x]);
}
double dist (double x, double y) {
return sqrt(x*x + y*y);
}
void init () {
memset(v, 0, sizeof(v));
memset(c, 0, sizeof(c));
for (int i = 1; i <= n; i++) {
f[i] = i;
scanf("%lf%lf", &p[i].x, &p[i].y);
for (int j = 1; j < i; j++) {
double tmp = dist(p[i].x-p[j].x, p[i].y-p[j].y);
if (d - tmp > -eps) {
g[i][c[i]++] = j;
g[j][c[j]++] = i;
}
}
}
}
int main () {
scanf("%d%lf", &n, &d);
init ();
int a, b;
char str[10];
while (scanf("%s", str) == 1) {
if (str[0] == 'O') {
scanf("%d", &a);
v[a] = 1;
int p = getfar(a);;
for (int i = 0; i < c[a]; i++) {
int u = g[a][i];
if (v[u] == 0) continue;
int q = getfar(g[a][i]);
if (p != q)
f[q] = p;
}
} else {
scanf("%d%d", &a, &b);
int p = getfar(a), q = getfar(b);
printf("%s\n", p == q ? "SUCCESS" : "FAIL");
}
}
return 0;
}
分享到:
相关推荐
poj2492 A Bug's Life并查集应用的扩展,希望可以给大家带来用处
POJ 1988 并查集。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
北大POJ2531-Network Saboteur 解题报告+AC代码
poj 1459 Power Network.md
这份代码用C++实现了经典算法并查集,来源于poj题目1182
poj 1611 The Suspects 代码 并查集的应用
并查集基础 acm 算法 poj oi 并查集基础.ppt
北大POJ1459-Power Network 解题报告+AC代码
POJ1089 并查集可以解决 并查集加路径压缩
数据结构并查集的相关资料,包括几篇并查集的论文,还有POJ上面几道关于并查集的题目的源代码
East Central North America 1999。50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50...
利用并查集判断环路,以及快速排序计算最小生成树
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
poj分类poj分类poj分类poj分类
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
北大POJ1159-Palindrome 解题报告+AC代码
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告