AT_unionfind_a.Union Find
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
本题为讲座用题目。页面底部附有题解。
考虑一个有 N 个顶点的无向图,该图不一定是简单图。初始状态下,图中只有顶点,没有任何边,所有顶点都是孤立的。接下来会给出 Q 次如下两种类型的操作:
- 连接操作:在顶点 A 和顶点 B 之间添加一条边。
- 查询操作:判断顶点 A 和顶点 B 是否连通。如果连通则输出
Yes,否则输出No。
请按顺序处理所有操作,并对每个查询操作输出答案。需要注意的是,可能会多次添加同一条边,也可能会添加自环。
顶点 A 和顶点 B 连通,指的是可以通过若干条边从 A 到达 B。当 A 和 B 是同一个顶点时,视为连通。由于图是无向图,连接操作在 A 和 B 之间添加边后,A 可以到达 B,B 也可以到达 A。
输入格式
输入通过标准输入给出,格式如下:
N Q
P1 A1 B1
P2 A2 B2
⋮
PQ AQ BQ
- 第 1 行包含两个整数 N (1≤N≤100000) 和 Q (1≤Q≤200000),分别表示顶点数和操作数,以空格分隔。
- 接下来的 Q 行,每行包含三个整数 Pi (0≤Pi≤1)、Ai、Bi (0≤Ai,Bi≤N−1),以空格分隔。
- 当 Pi=0 时,表示连接操作。
- 当 Pi=1 时,表示查询操作。
输出格式
对于每个查询操作,输出一行答案。每次输出后需换行。
输入输出样例
输入#1
8 9 0 1 2 0 3 2 1 1 3 1 1 4 0 2 4 1 4 1 0 4 2 0 0 0 1 0 0
输出#1
Yes No Yes Yes
说明/提示
题解
并查集(Union Find,素集合数据结构) 来自 AtCoder Inc.
样例解释 1
操作按如下顺序执行:
- 第 1 次操作,将顶点 1 和顶点 2 连接。
- 第 2 次操作,将顶点 3 和顶点 2 连接。
- 第 3 次操作,查询顶点 1 和顶点 3 是否连通。它们已连通,输出
Yes。 - 第 4 次操作,查询顶点 1 和顶点 4 是否连通。它们未连通,输出
No。 - 第 5 次操作,将顶点 2 和顶点 4 连接。
- 第 6 次操作,查询顶点 4 和顶点 1 是否连通。它们已连通,输出
Yes。 - 第 7 次操作,将顶点 4 和顶点 2 连接。它们已连通,但允许出现多重边。
- 第 8 次操作,将顶点 0 和顶点 0 连接。它们是同一个顶点,也允许出现自环。
- 第 9 次操作,查询顶点 0 和顶点 0 是否连通。同一个顶点总是连通的,输出
Yes。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?