`
Simone_chou
  • 浏览: 192867 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Wireless Network(并查集)

 
阅读更多
Wireless Network
Time Limit: 10000MS   Memory Limit: 65536K
Total Submissions: 14086   Accepted: 5962

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

   题意:

   有N(1到1001)台机器和D最小距离(0到20000),给出每台机器的坐标(X,Y)(0到10000)。O代表已经修好某台机器,S代表询问A和B机器间是否能联系上。要能联系则必须两机器的坐标距离不大于D,如果A和B能连上,B和C能连上,那么A和C也能连上。输出当询问S时,两部机器能联系上的结果,能则输出SUCCESS,不能则输出FAIL。

   思路:

   普通并查集。但是与一般不同是它有一个距离的条件,并且每次输入O可能会更新一次连通集合。用rep数组来表示机器i是否已经修好,1为修好,0为没有修好。当输入O时,循环一次所有机器,当循环到有一台机器满足距离小于1,且这部机器已经是修好的,那就将该机器合并到该集合中。当输入S时,判断A和B的根节点是否相同则知道是否能连接上。

    AC:

#include<stdio.h>
#include<math.h>
#include<string.h>
typedef struct 
{
	int x;
	int y;
}pos;

pos num[1005];
int root[1005],rep[1005];
int n;

double distance(pos a,pos b)
{
    double s;
    s=sqrt(pow((double)a.x-(double)b.x,2)+pow((double)a.y-(double)b.y,2));
    return s;
}

int find(int a)
{
	int x=a,t;
	while(x!=root[x])
	   x=root[x];
	while(x!=a)
	{
		t=root[a];
		root[a]=x;
		a=t;
	}
	return x;
}

void merge(int a,int b)
{
	int fa,fb;
	fa=find(a);
	fb=find(b);
	if(fa!=fb) root[fa]=fb;
}

int main()
{
	int d;
	char c[5];
	int a,b;
	scanf("%d%d",&n,&d);
	memset(rep,0,sizeof(rep));
	for(int i=1;i<=n;i++)
	    root[i]=i;
	
	for(int i=1;i<=n;i++)
	 	scanf("%d%d",&num[i].x,&num[i].y);
	
	while(scanf("%s",c)!=EOF)
	{
		if(c[0]=='O')
		{
			scanf("%d",&a);
			rep[a]=1;
			for(int i=1;i<=n;i++)
			  if(distance(num[i],num[a])<=d&&rep[i])  merge(a,i);
//这里的距离因为看了样例,然后固化了,写成小于1.0,然后又WA了N次
		}
		else
		{
			scanf("%d%d",&a,&b);
			if(find(a)==find(b)) printf("SUCCESS\n");
			else printf("FAIL\n");
//这里一开始写成FALL,WA了一次
		}
	}
	return 0;
}

   总结:

   1.一开始定义输入字符char c,输入的时候scanf(“%c”,&c)出现了错误,输入scanf(“%  c”,&c)就不会出现错误了,也就是输入格式前面加个空格;

   2.FAIL一开始打成FALL,低级错误;

   3.距离是小于d不是小于样例给的1,又是低级错误;

   4.一开始想的是:当O的时候登记rep为修好状态,当S的时候再一个个匹配合并,然后用了一个二重循环,先找到一个已经修好的,然后以这个修好的为基准再循环一层来找下一个修好的,然后匹配。这样无疑会TLE的。改进后就是每输入一次O就更新一次连通集合,没输入一次S就判断一次两者是否属于一个集合就可以了。

   5.一开始还想过用一个二维数组来保存i到j是否能连上的状态,其实不需要,改进后只需要用个rep数组登记就好。

分享到:
评论

相关推荐

    wireless_tools,iwlist,iwconfig,iwpriv等

    1. **`iwconfig`**:这是Linux内核自带的一个命令行工具,主要用于查看和配置无线网络接口的基本信息,如ESSID(服务集标识符,即无线网络的名称)、频道、速率、加密状态等。你可以通过`iwconfig interface_name`...

    算法解析ACM

    此问题可以通过构建并查集,将可堆叠的立方体视为同一集合来解决。 **案例分析:Pku1733—Parity game** 题目描述:给定一个棋盘上的初始状态,玩家轮流移动棋子,目标是使得所有棋子在同一行或同一列。此问题可以...

    BT/WIFI/2G/3G/4G频段频率查询工具(WlsCommsCalc401RC4)

    5. **WLAN(Wireless Local Area Network)**:即Wi-Fi,是基于IEEE 802.11系列标准的局域网无线通信技术,常见频段有2.4GHz和5GHz,用于家庭、办公室和公共热点的无线互联网连接。 6. **BLUETOOTH**:短距离无线...

    源码下载:C#获取wifi网络列表.zip

    这些类可以帮助开发者枚举当前可用的无线网络,并获取每个网络的相关信息,如SSID(服务集标识符,即Wi-Fi网络的名称)、信号强度、加密状态等。 描述中没有提供额外的具体技术细节,但我们可以推测这个项目可能...

    Bluetooth spec

    蓝牙是一种无线个人区域网路(Wireless Personal Area Network, WPAN)技术标准,旨在短距离内实现设备间的无线通信。它通过定义一组协议来支持语音和数据传输,并广泛应用于手机、笔记本电脑、音频播放器等设备中。...

    计算机网络基础知识总结.md

    - **定义**:IXP是一种特殊的网络节点,它的主要功能是让两个网络能够直接相连并交换数据包,无需通过第三方网络转发。 - **优势**:提高数据交换速度,降低网络延迟,减少成本。 - **案例**:许多大城市的IXP中心...

    (计算机专业)计算机硬件类_计算机网络基础.pdf

    20. WLAN连接方式:WLAN(Wireless Local Area Network)是无线连接。正确答案是B。 21. 拨号上网设备:Modem(调制解调器)用于拨号接入Internet。正确答案是C。 22. 传输介质错误率:光缆是错误率最低的传输介质...

    无线参数linux下无线AP用到CPE【最新】.pdf

    在Linux系统中,管理无线网络连接时,`iwconfig`是一个非常重要的命令行工具,它属于Linux Wireless Extensions(LWE)的一部分。LWE提供了一套完整的框架,包括内核支持、用户空间配置工具和驱动接口,用于管理和...

    WLAN连接控制台程序

    1. **WLAN基础概念**:WLAN,全称Wireless Local Area Network,是一种使用无线电波或红外线传输数据,实现设备间通信的局域网。WLAN的核心组成部分是无线接入点(Access Point, AP),它允许无线设备连接到有线网络...

    j2me手机程序入门 源代码

    3. 网络通信类(Network Class):负责与服务器的通信,发送请求并接收响应。 在源代码中,你可能会看到`Displayable`接口的使用,它是所有显示对象的基类;`Canvas`类用于自定义图形界面;`Form`类用于创建包含多...

    计算机网络局域网章节作业解答

    随着技术的发展,无线局域网(Wireless Local Area Network,WLAN)也逐渐普及,使用无线电波作为传输介质,提供更灵活的网络部署方案。每种传输媒体都有其适用场景和优缺点,例如双绞线成本低廉,安装方便,但传输...

    计算机专业英语词汇加课后答案

    Wireless revolution描述了无线技术的发展,如Wi-Fi和蓝牙。Worksheet file在电子表格软件中,指的是包含数据的工作表。 在更高级的概念中,analytical graph用于数据可视化,帮助分析数据。Content提示向导...

    中国移动-WLAN工程测试验收规范

    - **WLAN(Wireless Local Area Network)**:无线局域网,是一种利用无线电波进行数据传输的局域网络。 #### 三、AP及热点验收测试 - **3.1 AP及热点验收测试项目** - **安装工艺检查**:包括AP设备安装、天线...

    计算机专业词汇翻译

    下载是指从远程服务器获取数据或文件,并将其保存到本地计算机的过程。 #### DVD(数字化通用磁盘) DVD是一种高密度光盘存储介质,用于存储高质量的视频、音频和数据文件。 #### Database(数据库) 数据库是一...

    算法艺术与信息学竞赛题目完全解析

    1.4.1 并查集.............................................................................................................50 Pku1703--Find them, Catch them.................................................

    计算机专业英语词汇

    它可以有效地帮助用户理解复杂的数据集,并从中提取有用的信息。 **5. Animations 动画** 在计算机科学领域,动画是指一系列连续的画面或图像快速切换而形成的视觉效果。动画广泛应用于游戏开发、影视制作以及用户...

    基于云的无线体域网实时查询处理优化

    由于电子健康应用对无处不在计算的日益增长的需求、电子... 基于真实和合成数据集的性能分析和实验表明,新架构及其底层提出的算法优化了实时查询处理,以实现最小的能耗和查询延迟,并提供安全和强大的存储基础设施。

    Distributed Computing.pdf

    #### 十二、无线协议(Wireless Protocols) **知识点:** - **基础知识(Basics):** - 无线协议是无线网络中节点之间通信的标准。 - 这些协议必须考虑无线网络特有的挑战,如信号干扰和能量限制。 - 了解无线协议...

Global site tag (gtag.js) - Google Analytics