/ Vijos / 题库 /

并查集

并查集

时间限制:1秒  内存限制:256M


【问题描述】

  \(n\) 个不同元素分布在若干个互不相交的集合中,需要进行以下 3 个操作:

  1.合并两个集合(Merge)。
  2.查询元素所在的集合(Find)。
  3.查询两个元素是否属于同一个集合(Judge)。

  请你设计一种数据结构,支持上面三种操作,并且时间效率尽量的高。

【输入格式】

  第 1 行一个整数 \(n\),表示有 \(n\) 个不同元素组成的 \(n\) 个集合:\({1}、{2}、…、{n}\)。
  第 2 行一个整数 \(m\),表示有 \(m\) 个操作。
  接下来的 \(m\) 行,每行一个操作,格式如下:
   Merge \(x\) \(y\):表示合并 \(x\) 和 \(y\) 所在的两个集合,如果他们已经在同一个集合,则忽略这个操作。
   Judge \(x\) \(y\):表示查询 \(x\) 和 \(y\) 是否在同一个集合中,如果在同一个集合,就输出Yes,否则输出No。
  以上操作中的 \(x,y\) 均满足 \(1≤x,y≤n\)。

【输出格式】

  输出每个 Judge 的结果。

【输入输出样例1】

 Input

6
10
Merge 1 2
Judge 1 3
Judge 1 2
Merge 2 5
Merge 3 6
Judge 1 5
Judge 3 2
Merge 2 6
Judge 1 5
Judge 4 5

 Output

No
Yes
Yes
No
Yes
No

【数据说明】

  对于 \(100\%\) 的数据,\(0<n,m≤300000\)。

【来源】

  Mr.he

信息

ID
1542
难度
(无)
分类
数据结构 | 并查集 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
4
上传者