这一题的大意:在救灾当中需要用网络,这堆人就用笔记本建了一个无线网,但是来,互相通信都是有距离限制的,一台电脑只能和距离他为d的电脑通信,然后一台电脑也可以通过几台电脑搭成线这样通信。然后就是输入每台电脑的坐标,然后准备好了的电脑,询问两台电脑是否可以连通,可以输出"SUCCESS",不行输出"FAIL"

这一题是带有计算几何的并查集问题。还是有点小技巧的。

最开始,我想的就是把修好的电脑弄成一个集合,然后计算距离就可以了(开始没注意到还可以通过n个连接来通信,还以为最长两个呢),但是发现多台电脑来通信非常难求距离。

然后就发现其实可以将可以通信的电脑合并成一个集合,即计算一个新来的电脑和前面修好的每台电脑的距离,如果他们距离小于d,则就将这个新电脑连到那个电脑所在的集合上,判断两台电脑能否通信,只要计算两台电脑是否在一个集合即可。

上代码:

#include<iostream>
#include<cmath>
using namespace std; int father[];
int rank[];
int xcor[];
int ycor[];
int map[][]; //用于记录两点距离是否可以通信 int Get_Set(int x)
{
if(father[x]!=x) return father[x]=Get_Set(father[x]);
else return x;
}
void Union(int x,int y)
{
x=Get_Set(x);
y=Get_Set(y);
if(x==y) return;
else{
if(rank[x]>rank[y]) father[y]=x;
else{
father[x]=y;
if(rank[x]==rank[y]) rank[y]++;
}
}
} bool dist(int i,int j,int d)
{
if(pow(float(xcor[i]-xcor[j]),)+pow(float(ycor[i]-ycor[j]),)<=d*d) return true;
else return false;
} int main()
{
int N,d,i,j,k,xv,yv;
scanf("%d%d",&N,&d);
for(i=;i<=N;i++)
{
scanf("%d%d",&xv,&yv);
xcor[i]=xv;
ycor[i]=yv;
father[i]=-;
rank[i]=;
}
memset(map,,sizeof(map));
for(i=;i<=N;i++)
for(j=i;j<=N;j++)
{
if(dist(i,j,d))
{
map[i][j]=map[j][i]=;
}
} char oper;
while(cin>>oper)
{
if(oper=='O')
{
scanf("%d",&k);
father[k]=k;
for(i=;i<=N;i++)
if(father[i]!=-)
{
if(map[k][i]) Union(k,i); //和每个修好的电脑比较,如果可以通信就合并
}
}
if(oper=='S')
{
scanf("%d%d",&j,&k);
if(Get_Set(j)==Get_Set(k)) printf("SUCCESS\n");
else printf("FAIL\n");
} }
return ;
}

poj2236无线网络的更多相关文章

  1. win10系统下连接无线网络掉线问题解决办法

    打开驱动精灵----系统诊断 找一个可修复的驱动点击 选择连不上网中的查看更多 有连不上网络,网络连接受限,解决无线间歇性掉网问题 进入计算机管理----设备管理 修改无线网络属性(名称含有wirel ...

  2. PDA移动POS终端系统,实现专柜或店铺的收货、零售、盘点通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理

    利用PDA移动终端,实现专柜或店铺的收货.零售.盘点等一体化操作,通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理. · PDA订货会应用解决方案利用PDA或电脑系统,在订货会现场直接 ...

  3. linux 下链接无线网络

    无线网卡配置此页由Linux Wiki用户Chenxing于2008年11月27日 (星期四) 09:28的最后更改. 在1233456的工作基础上.本文介绍在Linux命令行界面中手动配置无线网卡的 ...

  4. 卓越精Forsk.Atoll.v3.3.2.10366无线网络

    卓越精Forsk.Atoll.v3.3.2.10366无线网络 Atoll是法国 FORSK 公司开发的,是一个全面的.基于Windows的.支持2G.3G.4G多种技术,用户界面 友好的无线网络规划 ...

  5. CentOS 7 最小化安装的无线网络配置

    1.首先下载iw工具. yum -y install iw 2.获取无线网卡的名称 执行iw dev,假设获得名称为 wlp3s0(示例) 3.激活无线网络接口 执行ip link set wlp3s ...

  6. CentOS 7如何连接无线网络

    虽然查阅了相关网络资料,但是以下内容均为原创内容,只有干货,无废话. 1.切换到超级用户 [Oscar@localhost 桌面]$ su root 2.查询可用的无线网卡,其中红色为网卡号 [Osc ...

  7. 双系统下(Ubuntu + win7)windows 无法连接无线网络

    双系统下(Ubuntu + win7)windows 无法连接无线网络 今天开机登录win7,突然发现无法使用无线网络(WiFi信号标志有个大红叉),于是查看设备驱动,一切正常,这就奇怪了:用Wind ...

  8. linux开机自动连接无线网络

           1.右击无线网络图标的“编辑连接”. 2.在“无线”选项卡里,选择“编辑”. 3.在“无线安全性”选项卡里,输入无线密匙,并选中左下角的“对所有用户可      用”的选项点击应用,会提 ...

  9. luogu2038[NOIP2014 T4]无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

随机推荐

  1. JBoss7官方最新版下载地址

    JBoss是全世界开发人员共同努力的成果,一个基于J2EE的开放源码的应用server. 由于JBoss代码遵循LGPL许可,能够在不论什么商业应用中免费使用它,而不用支付费用.2006年,Jboss ...

  2. Python学习笔记21:数据库操作(sqlite3)

    Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言. SQLite作为后端数据库,能够搭配Python建站点,或者制作有数据存储需求的工具. SQLite还在其他领域有广泛 ...

  3. 栈 & 堆 |--> 内存管理

    内存管理: 栈区 [stack]:由编译器自动分配并释放,一般存放函数的参数值,局部变量等 堆区 [heap]:由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系统回收 全局区(静态区) ...

  4. 类的构造函数 this 关键字

    今天研究了一下mvc 的绑定脚本,绑定样式类. 看了下源码,里面有一个 构造函数里面 有一个 this 关键字.我想,怎么我的项目没有用到呢. 于是做了一个例子示范了一下. using System; ...

  5. Windows Phone 8.1 多媒体(3):音乐

    原文:Windows Phone 8.1 多媒体(3):音乐 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...

  6. Java项目生成静态页面

    第一次做项目需要生成静态页面,网上很多大牛对将网页生成静态页面有很多异议.说一下我的看法. 不外乎有以下因素: 1.从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种 ...

  7. C++多线程分析

    我们开始谈论的线程之前先看看这些线载波前-进程. 进程,它是一个正在执行的程序的实例.是一个程序在其自身的地址空间的一次执行活动.进程是资源申请.调度.和独立执行的基本单位.进程有两部分组成: 1.操 ...

  8. Windows Server 2008安装 百度Wifi \ 360Wifi \ 小米Wifi 失败的解决方法

    服务器管理 -> 功能 -> 安装 [无线LAN]服务

  9. 关于Office 中的墨迹功能(可作word电子签名)

    原文 关于Office 中的墨迹功能 通过使用 Microsoft Office 2003 中的墨迹功能,可使用 Tablet PC 和 Tablet 笔将手写笔记插入到 Microsoft Offi ...

  10. [Elasticsearch] 集群工作 - 第二部分

    本文翻译自Elasticsearch官方指南的life inside a cluster一章. 添加故障转移(Failover)功能 仅仅执行一个节点意味着可能存在着单点失败(Single point ...