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

#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. python从hello world开始(3)

    """# !usr/bin/env python# -*- coding:utf-8 _*-""""""@Au ...

  2. CentOS7安装开发工具套件时报错解决方案

    操作系统:CentOS 7.2 执行安装命令时显示以下信息: [root@DEV-CMDB-DB02 ~]# yum -y groupinstall "Development Tools&q ...

  3. (数据科学学习手札123)Python+Dash快速web应用开发——部署发布篇

    1 简介 这是我的系列教程Python+Dash快速web应用开发的第二十期,在上一期中我介绍了利用内网穿透的方式,将任何可以联网的电脑作为"服务器"向外临时发布你的Dash应用. ...

  4. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  5. 在.NET 6中使用DateOnly和TimeOnly

    千呼万唤始出来 在.NET 6(preview 4)中引入了两个期待已久的类型,将作为核心库的一部分.DateOnly和TimeOnly允许开发人员表示DateTime的日期或时间部分.这两个类型为值 ...

  6. 出现 关于UTF-8 序列的字节 2 无效的异常

    学习mybatis中碰到了 Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instanc ...

  7. oracle实现通过logminer实现日志抓取分析

    场景:现场库到前置库. 思考:使用触发器? 1.侵入性解决方案 2.需要时各种配置,不需要时又是各种配置 Change Data Capture:捕捉变化的数据,通过日志监测并捕获数据库的变动(包括数 ...

  8. libevent中的事件机制

    libevent是事件驱动的网络库,事件驱动是他的核心,所以理解事件驱动对于理解整个网络库有很重要的意义.       本着从简入繁,今天分析下单线程最简单的事件触发.通过sample下的event- ...

  9. GO语言常用标准库02---os包

    package main import ( "fmt" "os" ) func main() { //获得当前工作路径(当前工程根目录) dir, err := ...

  10. TVM vs TensorRT比较

    TVM vs TensorRT比较 如果理解正确的话,TensorRT和TVM会加快预测速度. TensorRT优化预测GPU和TVM优化预测几乎所有平台支持GPU,ARM,Mobile... 两者在 ...