Wireless Network
Time Limit: 10000MS   Memory Limit: 65536K
Total Submissions: 25022   Accepted: 10399

Description

An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wireless network with the lap computers, but an unexpected aftershock attacked, all computers in the network were all broken. The computers are repaired one by one, and the network gradually began to work again. Because of the hardware restricts, each computer can only directly communicate with the computers that are not farther than d meters from it. But every computer can be regarded as the intermediary of the communication between two other computers, that is to say computer A and computer B can communicate if computer A and computer B can communicate directly or there is a computer C that can communicate with both A and B.

In the process of repairing the network, workers can take two kinds of operations at every moment, repairing a computer, or testing if two computers can communicate. Your job is to answer all the testing operations.

Input

The first line contains two integers N and d (1 <= N <= 1001, 0 <= d <= 20000). Here N is the number of computers, which are numbered from 1 to N, and D is the maximum distance two computers can communicate directly. In the next N lines, each contains two integers xi, yi (0 <= xi, yi <= 10000), which is the coordinate of N computers. From the (N+1)-th line to the end of input, there are operations, which are carried out one by one. Each line contains an operation in one of following two formats: 
1. "O p" (1 <= p <= N), which means repairing computer p. 
2. "S p q" (1 <= p, q <= N), which means testing whether computer p and q can communicate.

The input will not exceed 300000 lines.

Output

For each Testing operation, print "SUCCESS" if the two computers can communicate, or "FAIL" if not.

Sample Input

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

Source

原题大意:给两个整数N和d,N为电脑的个数,d为无线传播的最远距离。
              接下来给N行,表示N台电脑的坐标。
              直到输入结束,都会输入一个字符,如果为O,则再输入一个整数x表示编号为x的电脑被修好。
              如果为S,再输入两个整数x,y,询问x与y之间是否连通。
解题思路:对于每台电脑一旦修好,判断与它可以连通的点的集合并合并。
              询问的时候用并查集寻找即可。其实还是一个裸并查集。
#include<stdio.h>
#include<string.h>
#include<math.h>
#define dist(x1,y1,x2,y2) (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)
int father[10050],n,d;
bool ingragh[10050];
struct node
{
int x,y;
}node[10050];
int find(int x)
{
if(x==father[x]) return (x);
else father[x]=find(father[x]);
return (father[x]);
}
void merge(int x,int y)
{
int find_x=find(x);
int find_y=find(y);
if(find_x!=find_y&&dist(node[x].x,node[x].y,node[y].x,node[y].y)<=d*d)
father[find_x]=find_y;
return;
}
void init()
{
int i;
for(i=1;i<=n;++i) father[i]=i;
memset(ingragh,false,sizeof(ingragh));
}
int main()
{
int i,query1,query2;
char c;
scanf("%d%d",&n,&d);
init();
for(i=1;i<=n;++i) scanf("%d%d",&node[i].x,&node[i].y);
while(~scanf("%c%d",&c,&query1))
{
if(c=='O')
{
for(i=1;i<=n;++i) if(ingragh[i]) merge(i,query1);
ingragh[query1]=true;
}
else
if(c=='S')
{
scanf("%d",&query2);
if(ingragh[query1]&&ingragh[query2])
{
if(find(query1)==find(query2))
{
printf("SUCCESS\n");
continue;
}
}
printf("FAIL\n");
}
}
return 0;
}

  

[并查集] POJ 2236 Wireless Network的更多相关文章

  1. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题五 并查集 POJ 2236 Wireless Network

    题意: 一次地震震坏了所有网点 现在开始修复它们 有N个点 距离为d的网点可以进行通信 O p   代表p点已经修复 S p q 代表询问p q之间是否能够通信 思路: 基础并查集 每次修复一个点重新 ...

  2. POJ 2236 Wireless Network ||POJ 1703 Find them, Catch them 并查集

    POJ 2236 Wireless Network http://poj.org/problem?id=2236 题目大意: 给你N台损坏的电脑坐标,这些电脑只能与不超过距离d的电脑通信,但如果x和y ...

  3. poj 2236:Wireless Network(并查集,提高题)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 16065   Accepted: 677 ...

  4. POJ 2236 Wireless Network(并查集)

    传送门  Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 24513   Accepted ...

  5. POJ 2236 Wireless Network (并查集)

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 18066   Accepted: 761 ...

  6. POJ 2236 Wireless Network (并查集)

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

  7. poj 2236 Wireless Network (并查集)

    链接:http://poj.org/problem?id=2236 题意: 有一个计算机网络,n台计算机全部坏了,给你两种操作: 1.O x 修复第x台计算机 2.S x,y 判断两台计算机是否联通 ...

  8. poj 2236 Wireless Network 【并查集】

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 16832   Accepted: 706 ...

  9. POJ 2236 Wireless Network [并查集+几何坐标 ]

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

随机推荐

  1. 死性不改ISO9000系列系统 2011q4~2016q1

    百度云链接: http://pan.baidu.com/s/1o8rO3W2 密码: kabg 2016q2由于发布没多久,可能会重新修改,暂时不转载.

  2. SQL查询每个表的字段数量

    --SQL查询每个表的字段数量select b.[name], count(*) As AllCount,ISNULL(ISNULL(sum(case when isnullable=0 then 1 ...

  3. 【leetcode❤python】 303. Range Sum Query - Immutable

    #-*- coding: UTF-8 -*- #Tags:dynamic programming,sumRange(i,j)=sum(j)-sum(i-1)class NumArray(object) ...

  4. json接口

    http://api.rottentomatoes.com/api/public/v1.0/lists/movies/in_theaters.json?apikey=7waqfqbprs7pajbz2 ...

  5. php-sql-parser sql防注入脚本

    <?php /** * SQL Parser from: http://code.google.com/p/php-sql-parser/ * License: New BSD */ class ...

  6. 虚拟现实外包公司—焰火工坊CTO团队外包难把VR真正做起来,讲故事可能将伤害产业链

    CTO王明杨,带着他的焰火工坊,正在为自家VR播放器和系统的上线做最后准备.不少投资机构,有传言称包括小米在内巨头都试图染指VR领域,而上月上市的暴风影音正是倚靠VR的概念成功助推了其高股价.对此,王 ...

  7. Java多线程同步 synchronized 关键字的使用

    代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A, ...

  8. 实现PHPCMS手机门户的伪静态

    1.打开/phpcms/modules/wap/functions/global.func.php找到里面的这两个函数,如下图所示的注释掉的那行代码,在下面加入一行代码. function list_ ...

  9. Windows下搭建NodeJS绿色版开发环境

    文章最初发布于szhshp的第三边境研究所, 转载请注明 开发背景 博客一直用的是Jekyll, 突然想玩玩NodeJS和Hexo, 于是就试着搭建一下 绿色环境, 基于Window8, 不需要管理员 ...

  10. select下拉框插件(转)

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...