1. #include<iostream>
  2. #include<vector>
  3. #include<string>
  4. #include<cmath>
  5. #include<algorithm>
  6. #include<cstdio>
  7. #include<cstring>
  8.  
  9. using namespace std;
  10.  
  11. int n, d;
  12. double dis[][];
  13. struct Point
  14. {
  15. double x, y;
  16. }cur[];
  17.  
  18. int Tree[];
  19.  
  20. int findRoot(int x)
  21. {
  22. if(Tree[x] == -)
  23. return x;
  24. int tmp = findRoot(Tree[x]);
  25. Tree[x] = tmp;
  26. return tmp;
  27. }
  28.  
  29. int main()
  30. {
  31. scanf("%d %d", &n, &d);
  32. for(int i = ; i <= n; ++i)
  33. {
  34. Tree[i] = -;
  35. double x, y;
  36. scanf("%lf %lf", &x, &y);
  37. cur[i].x = x;
  38. cur[i].y = y;
  39. }
  40.  
  41. for(int i = ; i <= n; ++i)
  42. for(int j = i; j <= n; ++j)
  43. {
  44. dis[i][j] = dis[j][i] = sqrt((cur[i].x - cur[j].x)*(cur[i].x - cur[j].x)+(cur[i].y - cur[j].y)*(cur[i].y - cur[j].y));
  45. }
  46.  
  47. vector<int> rep; // repaired
  48. char c;
  49. while(scanf("%c", &c) != EOF)
  50. {
  51. if(c == 'O')
  52. {
  53. int t;
  54. scanf("%d", &t);
  55. for(int i = ; i < rep.size(); ++i)
  56. {
  57. if(dis[rep[i]][t] <= d)
  58. {
  59. /* 不能这样写,否则会导致并查集的树结构不好,
  60. 路径压缩次数过多,导致RuntimeError(栈溢出)
  61. int ri = findRoot(rep[i]);
  62. Tree[ri] = t;
  63. */
  64.  
  65. // 标准写法
  66. int ri = findRoot(rep[i]);
  67. int rt = findRoot(t);
  68. if(ri != rt)
  69. Tree[ri] = rt;
  70.  
  71. }
  72. }
  73. rep.push_back(t);
  74.  
  75. }
  76. else if(c == 'S')
  77. {
  78. int t1, t2;
  79. scanf("%d %d", &t1, &t2);
  80. int rt1 = findRoot(t1);
  81. int rt2 = findRoot(t2);
  82. if(rt1 == rt2)
  83. printf("SUCCESS\n");
  84. else
  85. printf("FAIL\n");
  86. }
  87. }
  88.  
  89. return ;
  90. }

Wireless Network POJ - 2236 (并查集)的更多相关文章

  1. POJ 2236 Wireless Network 第一次做并查集,第一次写博客

    题意是判断两台电脑是否能通讯,两台修好的电脑距离在指定距离内可直接通讯,且两台修好的电脑能通过一台修好的电脑间接通讯.代码如下: #include <iostream> #include ...

  2. Day5 - B - Wireless Network POJ - 2236

    An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wi ...

  3. poj 2236 并查集

    并查集水题 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  4. Wireless Network(POJ 2236)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 20724   Accepted: 871 ...

  5. A - Wireless Network POJ - 2236

    题目大意:有n台坏掉的电脑,给出每台电脑的坐标,然后每次询问输入0(字符) x,表示电脑x恢复正常,输入S x y 询问x和y是否可以联网.只要是x和y的距离小于距离d,那么就可以联网,如果有个中介c ...

  6. (并查集) Wireless Network --POJ --2236

    链接: http://poj.org/problem?id=2236 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...

  7. DisJSet:Wireless Network(POJ 2236)

      无线电网络 题目大意:就是地震后,所有的电脑都坏了,现在可以修复,而且要重新连成一个网络,两台电脑之间最大连接距离为D,两台电脑可以有中继电脑,按O修复电脑,按S测试两台电脑是否有链接,如果有就输 ...

  8. A - Wireless Network POJ - 2236-kuangbin带你飞

    A - Wireless Network POJ - 2236 Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 50348 ...

  9. poj 1984 并查集

    题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...

随机推荐

  1. 廖雪峰Java15JDBC编程-2SQL入门-2insert/select/update/delete

    1. INSERT用于向数据库的表中插入1条记录 insert into 表名 (字段1,字段2,...) values (数据1,数据2,数据3...) 示例 -- 如果表存在,就删除 drop t ...

  2. SCOI2015

    这周各种头疼,一直睡觉+发呆,啥子都没干. 就补一下之前的东西. d1t1小凸玩矩阵 传送门 一开始脑子抽写了最小费用最大流,不知道自己怎么想的. 第k大最小,明显的二分,又是二分图,二分第k大值,把 ...

  3. 【BZOJ 1257】[CQOI2007]余数之和sum

    一道LLJ说他吃*的题. 我实在是太愚蠢了. 传送门

  4. 07_Hibernate多事务并发运行时并发问题检索方式

    什么是事务? 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 事务就是逻辑上的一组操作,要么全都成功,要么全都失败 ...

  5. 795. Number of Subarrays with Bounded Maximum

    数学的方式 是对于所有的字符分成简单的三类 0 小于 L 1 LR 之间 2 大于R 也就是再求 不包含 2 但是包含1 的子数组个数 不包含2的子数组个数好求 对于连续的相邻的n个 非2类数 就有 ...

  6. vue swiper点击后返回不能自动播放

    解决方法: 在返回时重新开启轮播 组件中: <swiper :options="swiperOption" ref="mySwiper" :class=& ...

  7. python基础-迭代器

    1.迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果 是下一次重复的初始值 2.为什么要有迭代器 对于序列类型:str list tuple 可以依赖索引来迭代取值,但是对于d ...

  8. 最小费用最大流——EK+SPFA

    终于把最小费用最大流学会了啊-- 各种奇奇怪怪的解释我已经看多了,但在某些大佬的指点下,我终于会了. 原来是个好水的东西. 最小费用最大流是什么? 不可能不知道网络流吧?如果不知道,自行百度去-- 费 ...

  9. vue 学习 一

    1.实例: var vm = new Vue({ el: '#example', data: { a:1 }, created: function () { // `this` 指向 vm 实例 co ...

  10. LUOGU P2675 《瞿葩的数字游戏》T3-三角圣地

    题面 解题思路 手推可以得出,最后每个数字的贡献其实就是第n行杨辉三角数,然后直接卢卡斯直接算(今天才找到lucas定理时间复杂度是log n,log以模数为底).代码略麻烦,不想改了. 代码 #in ...