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

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; int father[1005];
struct Coord //电脑坐标
{
int x;
int y;
} coo[1005];
struct Repair //已修复好的电脑的坐标和编号
{
int x;
int y;
int numb;
} rep[1005]; int Find_fath(int x) //并查集寻找父亲
{
if (x != father[x])
father[x] = Find_fath(father[x]); //压缩返回路径
return father[x];
}
void Union(int x,int y) //并查集父亲合并
{
x=Find_fath(x);
y=Find_fath(y);
if(x!=y)
father[y]=x;
}
int main()
{
//freopen("in.txt","r",stdin);
int n,d;
int num_rep=0; //修复电脑的数量
char oper; //对电脑的操作
cin>>n>>d;
for(int i=1; i<=n; i++)
scanf("%d%d",&coo[i].x,&coo[i].y);
for(int i=1; i<=n; i++)
father[i]=i; //初始化父亲为自己
getchar();
while(scanf("%c",&oper)!=EOF)
{
if(oper=='O')
{
int numb;
scanf("%d",&numb);
rep[num_rep].x=coo[numb].x;
rep[num_rep].y=coo[numb].y;
rep[num_rep].numb=numb;
for(int i=0; i<num_rep; i++)
{
if(num_rep==0)break;
int a,b;
a=rep[i].x-rep[num_rep].x;
b=rep[i].y-rep[num_rep].y;
if(a*a+b*b<=d*d)
Union(rep[i].numb,rep[num_rep].numb);
}
num_rep++;
}
else
{
int num1,num2;
scanf("%d%d",&num1,&num2);
if(Find_fath(num1)==Find_fath(num2))
printf("SUCCESS\n");
else
printf("FAIL\n");
}
getchar();
}
return 0;
}

不足之处,望多指点改正。转载请标明出处。

POJ 2236 Wireless Network 第一次做并查集,第一次写博客的更多相关文章

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

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

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

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

  3. [并查集] POJ 2236 Wireless Network

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

  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. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题五 并查集 POJ 2236 Wireless Network

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

  9. poj 2236 Wireless Network 【并查集】

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

随机推荐

  1. linux查看文件的编码格式的方法 set fileencoding PYTHON

    linux查看文件的编码格式的方法 set fileencoding   乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp93 ...

  2. 绿色版 notepad++ 添加鼠标右键菜单

    建立一个后缀为 .reg 的注册文件,拷贝以下内容并替换相关路径,保存病双击文件运行加入注册表. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ ...

  3. ubuntu中安装qgit工具-(转自Linux中国)

    QGit是一款由Marco Costalba用Qt和C++写的开源的图形界面 Git 客户端.它是一款可以在图形界面环境下更好地提供浏览版本历史.查看提交记录和文件补丁的客户端.它利用git命令行来执 ...

  4. Lua _G

    1.全局变量的原形 在Lua中,要声明全局变量很简单,那就是定义变量的时候,前面不要加上local. 这个神秘的全局变量,其实本质上也是一个table,它把我们创建的全局变量都保存到一个table里了 ...

  5. STM32进阶日志1

    一 工程习惯 ①必须模块化编程-一个功能一个CH分开,一个对象一个结构体; ②习惯使用bsp.c/bsp.h,BSP板级支持包源文件; ③多使用#define 来定义IO口与硬件相关特性,方便修改; ...

  6. unity texture 占用内存大小对比

    打包多种类型的项目,空项目和10张放在Resources文件夹中的图为比较案例.以下是比较数据. IPHONE: 1.空项目----空间占用量42.3MB----IPA大小10MB 2.10张1200 ...

  7. idea-创建web.xml模板

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  8. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  9. Docker学习(12) Dockerfile构建过程

    Dockerfile的构建过程 以上为构建缓存

  10. Python+Selenium学习笔记8 - 多表单&多窗口切换

    1.多表单切换 下图为待测页面:内嵌百度首页 切换到百度首页进行操作 1 # coding = utf-8 2 3 from selenium import webdriver 4 import os ...