jzoj1522 无线网络

news/2024/11/29 11:48:53/

Description

有一个由n台计算机组成的无线网络。(n <= 1001),正常情况下,每台计算机都能跟与它距离不超过d的任何计算机通讯(d <= 20000)。地震发生了。所有的计算机都陷入瘫痪。专家们试着一台一台地修复计算机,以恢复整个无线网络。有时在修复的过程中,他们需要测试一下某两台计算机能否通讯(如果他们能通过别的正常的计算机进行通讯,也算他们之间可以通讯,即“能否通讯”可以是间接的)。
你的任务,就是模拟修复网络的过程,并回答“能否通讯”的询问。

Input

第一行两个整数,N和d,N表示计算机的数目,d表示两台计算机直接可直接通讯的最大距离。接下来的N行,每行两个整数Xi,Yi,表示每台计算机的坐标。接下来有许多行,每行都是一个操作(或者是修复操作,或者是询问操作)。
操作的格式如下:
O p (1 <= p <= N) 修复操作,表示修复编号为p的电脑;
S p q (1 <= p, q <= N) 询问操作,询问编号为p和编号为q的电脑能否通讯。
如果一台电脑尚未被修复,则它不能和任何电脑通讯。

Output

对于每个询问操作:如果能够通讯,输出一行SUCCESS;如果无法通讯,输出一行FAIL

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

Hint

【限制】
对于50%的数据,N <= 300, 操作次数 <= 10000;
对于100%的数据,N <= 1001, 操作次数 <= 300000。

算法讨论

每修复一台电脑,把与它距离在d内且已修复的电脑放入同一个集合,询问时查询是否同一集合即可。
varf:array[0..1100] of boolean;x,y,t:array[0..1100] of longint;i,l,n,d,k:longint;c:char;
function find(z:longint):longint;
beginif t[z]=z thenexit(z);t[z]:=find(t[z]);exit(t[z]);
end;
procedure lian(v,z:longint);
varvv,zz:longint;
beginvv:=find(v);zz:=find(z);if vv<>zz then t[vv]:=zz;
end;
beginreadln(n,d);for i:=1 to n dobeginreadln(x[i],y[i]);t[i]:=i;end;while not eoln dobeginread(c);if c='O' thenbeginreadln(k);f[k]:=true;for i:=1 to n doif (f[i])and(sqrt(sqr(x[i]-x[k])+sqr(y[i]-y[k]))<=d) thenlian(i,k);endelsebeginreadln(k,l);if (f[k])and(f[l])and(find(k)=find(l)) thenwriteln('SUCCESS')else writeln('FAIL');end;end;
end.

http://www.ppmy.cn/news/280916.html

相关文章

【USACO2.4.3】【洛谷P1522】牛的旅行【最短路】【并查集】

题目大意&#xff1a; 题目链接&#xff1a; USACO:http://train.usaco.org/usacoprob2?aTyEfGmq7aAo&Scowtour 洛谷&#xff1a;https://www.luogu.org/problemnew/show/P1522 有一个无向图&#xff0c;可以在两个不同的联通块中选择其中两个结点并连接&#xff0c;求此…

洛谷 P1522 牛的旅行 Cow Tours

题目&#xff1a;牛的旅行 思路&#xff1a; 先预处理出两点间的距离&#xff0c;跑一边floyd&#xff0c;然后处理出每个点到离它最远的和它连通的距离L[i]。 然后再对于每个点&#xff0c;枚举所有和它不连通的点j&#xff0c;用L[i]L[j]d(i,j)更新最小答案。 注意下&#x…

Flutter路由——Navigator2.0

Navigator 2.0提供了一系列全新的接口&#xff0c;可以实现将路由状态成为应用状态的一部分&#xff0c;新增的API如下&#xff1a; Page:用来表示Navigator路由栈中各个页面的不可变对象&#xff0c;Page是一个抽象类通常使用它的派生类&#xff1a;MaterialPage或CupertinoP…

P1522 [USACO2.4]牛的旅行 Cow Tours(Floyd多源最短路)

洛谷&#xff1a;牛的旅行 Cow son Tours 毒瘤题意&#xff08;确信&#xff09; 此题数据很小&#xff0c;但题意不好分析 洛谷题解整理的概念就很好&#xff08;分析能力%%%&#xff09;&#xff1a; 牧区&#xff1a; 对应一个点。牧区之间的距离&#xff1a;实际上是两点…

1522 N 叉树的直径

题目描述&#xff1a; 给定一棵 N 叉树的根节点 root &#xff0c;计算这棵树的直径长度。 N 叉树的直径指的是树中任意两个节点间路径中 最长 路径的长度。这条路径可能经过根节点&#xff0c;也可能不经过根节点。 &#xff08;N 叉树的输入序列以层序遍历的形式给出&#xf…

Oracle12c创建1522端口实例 和删除实例

1.手动添加1522监听 选第一项 添加 输入新监听名称 任意即可 输入你的oracl密码 ,也就是下载时候的密码 ,一般都是orcl 点击下一步完成创建即可 手动添加完监听&#xff0c;开始创建实例 以管理员身份运行cmd&#xff0c;输入dbca 第一个 全局数据库名就是你的实例名&…

洛谷 P1522

题目 链接&#xff1a;https://www.luogu.com.cn/problem/P1522 思路 这个题有些坑 1 可能重连接后没有之前长 最长的还是以前的 2 一个点也可能是一个区域 代码 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include…

10g RAC 修改监听端口

11gRAC修改端口&#xff1a; http://blog.csdn.net/bamuta/article/details/29863943 11gRAC增加监听1&#xff1a; http://blog.csdn.net/bamuta/article/details/29865023 11gRAC增加监听2&#xff1a; http://blog.csdn.net/bamuta/article/details/300294…