问题:

地震发生在东南亚。 ACM(亚洲合作医疗团队)已经与膝上电脑建立了无线网络,但是一次意外的余震袭击,网络中的所有计算机都被打破了。计算机一个接一个地修复,网络逐渐开始工作。由于硬件限制,每台计算机只能直接与距离它不远的计算机进行通信。但是,每台计算机都可以被视为两台计算机之间通信的中介,也就是说,如果计算机A和计算机B可以直接通信,或者计算机C可以与A和b进行通信,则计算机A和计算机B可以进行通信。

在修复网络的过程中,工作人员可以随时进行两种操作,修复计算机或测试两台计算机是否可以通信。你的工作是回答所有的测试操作。
输入
第一行包含两个整数N和d(1 <= N <= 1001,0 <= d <= 20000)。这里N是计算机的数量,编号从1到N,D是两台计算机可以直接通信的最大距离。在接下来的N行中,每行包含两个整数xi,yi(0 <= xi,yi <= 10000),这是N台计算机的坐标。从第(N + 1)行到输入结束,有一些操作,这些操作是一个接一个地执行的。每行包含以下两种格式之一的操作:
1.“O p”(1 <= p <= N),表示修复计算机p。
2.“S p q”(1 <= p,q <= N),这意味着测试计算机p和q是否可以通信。

输入不会超过300000行。
产量
对于每个测试操作,如果两台计算机可以通信则打印“SUCCESS”,否则打印“FAIL”。
Sample Input
(注意0和o啊。。)

4 1
0 1
0 2
0 3
0 4
O 1
O 2
O 4
S 1 4
O 3
S 1 4

Sample Output
FAIL
SUCCESS

分析与解答:

我一开始没读懂提,1和2和4修好了,那2可以与3连,4可以与3连为啥1和四不能连?后来我明白了,修好的电脑能连与他距离小于等于d的修好的电脑。而不是说小于d的电脑都能与之连。就是说,可以通信的计算机一定都是已经修好的计算机,而且两台修好的计算机的距离还必须小于等于给定的那个距离。

编号从1-n,只不过这里的电脑多了个坐标,多了个距离的判断。
并查集里放的是相连的电脑编号,最后找也是找电脑编号的根

代码参考:https://blog.csdn.net/superxtong/article/details/51875835

#include<cstdio>
#include<cstring>
int pre[10100 ];
int find(int x)                                       //查找根节点
{ int r=x;while ( pre[r] != r )                           //返回根节点 rr=pre[r];int i=x , j ;while( i != r )                                   //路径压缩{j = pre[ i ];               //j是i的原来的父结点 pre[ i ]= r ;              //现在把i的父结点改成根节点 i=j;                       //再把j的父节点改成根节点 }return r ;
}
void join(int x,int y)                           //判断x y是否连通,//如果已经连通,就不用管了 如果不连通,就把它们所在的连通分支合并起,
{int fx=find(x),fy=find(y);if(fx!=fy)pre[fx ]=fy;
}
struct xyz{int x;int y;
};
xyz a[10086];
int flag[10086];
int main(){memset(flag,0,sizeof(flag));int n,d;scanf("%d%d",&n,&d);for(int i=1;i<=n;++i){pre[i]=i;scanf("%d%d",&a[i].x,&a[i].y);}char ch;while(scanf(" %c",&ch)!=EOF){if(ch=='O'){int k;scanf("%d",&k);flag[k]=1;for(int i=1;i<=n;i++){if(flag[i]&&i!=k){if((a[i].x-a[k].x)*(a[i].x-a[k].x)+(a[i].y-a[k].y)*(a[i].y-a[k].y)<=d*d)join(i,k);}}}if(ch=='S'){int x1,y1;scanf("%d%d",&x1,&y1);if(find(x1)==find(y1))printf("SUCCESS\n");elseprintf("FAIL\n");}}
}

(并查集)Wireless Network相关推荐

  1. POJ 2236 Wireless Network 并查集

    Wireless Network 并查集 Crawling in process... Crawling failed Time Limit:10000MS     Memory Limit:6553 ...

  2. POJ 2236 Wireless Network (并查集)

    Wireless Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/A Description An earthqu ...

  3. [kuangbin带你飞]专题五 并查集 A - Wireless Network

    A - Wireless Network 题目链接:https://vjudge.net/contest/66964#problem/A 题目: An earthquake takes place i ...

  4. java并查集计算机网络连通,poj2236 Wireless Network(并查集)

    题意:有n台损坏的电脑,现要将其逐台修复,且使其相互恢复通信功能.若两台电脑能相互通信,则有两种情况,一是他们之间的距离小于d,二是他们可以借助都可到达的第三台已修复的电脑.给出所有电脑的坐标位置,对 ...

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

    题意 一个计算机网络里的计算机都坏了, 现在有两种操作, "O p"代表修复了p机器, "S p q"代表检查 p, q 两台机器是否连接( 直线距离<= ...

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

    题干: An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up ...

  7. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  8. CF-1023F.Mobile Phone Network(并查集缩点)

    CF-1023F.Mobile Phone Network(并查集缩点) 题目链接 题意 你手里有K条边还没有分配权值,已经存在M条边带权值,如何给你手中的边分配权值,使得K条边都在最后的最小生成树中 ...

  9. UVA 1329 Corporative Network(并查集:路径压缩)

    UVA 1329 Corporative Network(并查集:路径压缩) 2014年03月09日 00:19:33 阅读数:914 UVA 1329 Corporative Network(并查集 ...

最新文章

  1. powershell 自动从组中移除禁用的账号
  2. 5.1Python函数(一)
  3. [转载]玩转Asp.net MVC 的八个扩展点
  4. 对比两个表中,字段名不一样的SQL
  5. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第6章-区域极点配置
  6. PHPStorm使用指南
  7. C#/.Net Core/WPF框架初建(国际化、主题色)
  8. 安卓逆向_7 --- 六种快速定位关键 Smali 代码的方法 ( 去掉 RE 广告 )
  9. 13 个开源备份解决方案
  10. 【VB6 Gdi+进阶】序章
  11. 【编程语言】正则表达式快速上手
  12. [环境搭建]-IIS下搭建FTP过程 解决无法连接及534 Policy requires SSL错误
  13. java 高斯投影_高斯投影正算公式以及java代码
  14. 计算机二级 Excel常用函数公式总结
  15. 给3D打印机升级的记录( i3 Mega S)
  16. 千行百业如何正确上BI?不仅要数据,更要生态 | 创新场景50
  17. java 实现橡皮擦_基于canvas剪辑区域功能实现橡皮擦效果
  18. 新手程序员基础都掌握了,动手敲代码就一脸懵逼?教你解决办法!
  19. Linux多网卡绑定(bond)及网络组(team)
  20. 和菲利普•科特勒的《营销管理》一样,这些都是比较好的市场营销书籍

热门文章

  1. overflow滚动条属性
  2. vc给exe更改图标
  3. Python格式化字符串f-string常用用法
  4. yolo 视频场景行为数据集
  5. sas sql 读取最后一行数据_SAS基础编程和数据处理
  6. oracle9i 恢复数据库,Oracle9i RMAN备份及恢复步骤(zt)
  7. linux cmake 编译项目,使用CMake构建复杂工程
  8. 计算机关闭窗口可以使用alt,禁止使用Alt+F4关闭窗口完整代码
  9. python opencv2_Python + OpenCV2 系列:2 - 图片操作
  10. linux内核分为四个子系统,linux操作系统的内核有哪几个子系统构成,简要说明各子系统的作用...