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 卡错误和效率。