【题目大意】

已知每一台电脑只能与它距离为d的电脑相连通,但是两台电脑间可以以第三台作为媒介连接。现在电脑全被损坏。每次可以进行两个操作中的一个,或是修好一台电脑,或是查询两台电脑是否连通。

【思路】

显然是并查集。每次修好一台新电脑,就与之前修好的每一台电脑进行判断,距离在d以内就合并。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=+;
int n,d;
int x[MAXN],y[MAXN],rep[MAXN];
int h[MAXN],pa[MAXN]; int ind(int a,int b)
{
return ((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b])<=d*d);
} void newset()
{
for (int i=;i<n;i++)
{
h[i]=;
pa[i]=i;
}
} int find(int x)
{
int r=x;
while (pa[r]!=r) r=pa[r];
int p=x;
while (pa[p]!=r)
{
int temp=pa[p];
pa[p]=r;
p=temp;
}
return r;
} void unionset(int fa,int fb)
{
if (h[fa]>=h[fb])
{
pa[fb]=fa;
if (h[fa]==h[fb]) h[fa]++;
}
else
pa[fa]=fb;
} int main()
{
scanf("%d%d",&n,&d);
for (int i=;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
} char c;
int repd=;//ÒѾ­Ð޺õĵçÄÔÊýÁ¿
newset(); getchar();
while (scanf("%c",&c)!=EOF)
{
if (c=='S')
{
int a,b;
scanf("%d%d",&a,&b);
a--;
b--;
if (find(a)==find(b)) cout<<"SUCCESS"<<endl;else cout<<"FAIL"<<endl;
} else
{
int a;
scanf("%d",&a);
a--;
for (int i=;i<repd;i++)
{
if (ind(a,rep[i]))
{
int fa=find(a),fb=find(rep[i]);
unionset(fa,fb);
}
}
rep[repd]=a;
repd++;
}
getchar();
}
return ;
}

【并查集】POJ2236-Wireless Network的更多相关文章

  1. 并查集-E - Wireless Network

    E - Wireless Network An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical t ...

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

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

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

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

  4. POJ2236 Wireless Network 并查集简单应用

    Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have ...

  5. poj-2236 Wireless Network &&poj-1611 The Suspects && poj-2524 Ubiquitous Religions (基础并查集)

    http://poj.org/problem?id=2236 由于发生了地震,有关组织组把一圈电脑一个无线网,但是由于余震的破坏,所有的电脑都被损坏,随着电脑一个个被修好,无线网也逐步恢复工作,但是由 ...

  6. poj2236 Wireless Network(并查集直接套模板

    题目地址:http://poj.org/problem?id=2236 题目大意:n台电脑都坏了,只有距离小于d且被修好的电脑才可以互相联系,联系可传递.输入n和d,n个点的坐标x y.两个操作:O ...

  7. 基础并查集poj2236

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

  8. 并查集——poj2236(带权并查集)

    题目:Wireless Network 题意:给定n台已损坏计算机的位置和计算机最远通信距离d,然后分别根据命令执行以下两种操作: "O p" (1 <= p <= N ...

  9. POJ-2236 Wireless Network 顺便讨论时间超限问题

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 26131   Accepted: 108 ...

  10. 并查集 poj2236

    网址:http://poj.org/problem?id=2236 题意:有n台坏的电脑,如果每两台电脑的距离不能超过d,那么这两台电脑有联系,用字符串O 表示标记第x台电脑维修了,用S判断从X到y是 ...

随机推荐

  1. URI设计原则

    以下是与 REST API 相关的重要术语: 资源(Resource) 是一个对象或对某物的表示.它有一些相关联的数据,并有一组方法进行操作. 例如:动物,学校和员工是资源.这些资源都有着删除,添加, ...

  2. c语言中的输入

    先打个白条有时间在写 c语言中输入一行回车之后,以空格为单位进行的分割

  3. 破解邻居家的wifi密码

    刚刚学习了如何破解wifi密码 然后昨天晚上连续破解了两个 好激动 我是在ubuntu上面使用aircrack-ng套件进行破解的 首先进行抓包,然后跑字典就ok了 下面的不错 一.关闭网络和结束可能 ...

  4. python面向对象进阶(下)

    一.item系列:就是把字典模拟成一个字典去操作(操作字典就用item的方式) obj[‘属性’]的方式去操作属性时触发的方法 __getitem__:obj['属性'] 时触发 __setitem_ ...

  5. 【Python学习】使用Pyinstaller将py文件导出为exe文件

    PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,但是它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在 ...

  6. devm_xxx机制

    前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收.参考内核文档devres.txt.总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题.这些资源的释放 ...

  7. ThinkPHP3.1.3 整合 UEditor百度编辑器 图片上传

    第一步.前端模板实例化百度编辑器 <js file='__ROOT__/Data/UEditor/ueditor.config.js' /> <js file='__ROOT__/D ...

  8. ERROR 1682 (HY000)

    ERROR 1682 (HY000) xtrabackup 恢复数据库后,出现1682错: root@localhost [(none)]>show global variables like ...

  9. Oracle 内存管理

    --内存分配建库时可以先分配系统内存的50%-80%给Oracle,后期根据业务再进行调整.SGA.PGA分配比例:OLTP:SGA %80 , PGA %20OLAP:SGA %50 , PGA % ...

  10. JQuery判断一个元素下面是否有内容或者有某个标签

    网站开发时,我们时常需要把没有内容的标签隐藏或者去掉.在用JQ有两种好的解决办法: 一.判断文本是否为空 var jqObj = $(this);if(jqObj.text().trim()){ // ...