U531226 【模板】可撤销并查集
题目背景
小 S 因为刚学会并查集且切了一堆水题后就开始~~自傲~~,所以小 Y 扔给了你一个模板题。
题目描述
你需要维护 $n$ 个集合,初始时第 $i$ 个集合只有一个元素 $i$。
给你 $m$ 次操作:
1. `1 x y` 把元素 $x$ 所在集合与元素 $y$ 所在集合合并。若合并前两个元素不在同一集合,额外记为一次**有效合并**;否则,忽略本次操作。
2. `2 x y` 查询元素 $x,y$ 是否在同一集合。是,输出 `Yes`;否,输出 `No`。
3. `3` 撤销上一次**有效合并**操作,已经撤销的忽略不计。数据保证一定有未被撤销的有效合并操作。
输入格式
第一行两个正整数 $n,m$。
接下来 $m$ 行,每行一个操作,格式同上。
输出格式
对于每个 `2 x y` 操作,输出答案,每个答案间用换行隔开。
说明/提示
$1 \le n \le 5\times 10^5,1 \le m \le 2 \times 10^6$。
测试点 1 卡错误的合并方式,测试点 2、3、4 卡错误和效率。