#P3402. 【模板】可持久化并查集

【模板】可持久化并查集

【模板】可持久化并查集

  • 时间限制:1 秒
  • 内存限制:512 MiB

题目描述

初始有 nn 个互不相交的集合,第 ii 个集合只包含元素 ii。依次执行 mm 个操作:

  • 1 a b:合并元素 a,ba,b 所在的集合;
  • 2 k:令当前状态回到第 kk 次操作完成后的状态。特别地,k=0k=0 表示初始状态;
  • 3 a b:询问元素 a,ba,b 当前是否属于同一集合。若是输出 11,否则输出 00

任意一种操作都占用一个操作编号。回退操作保证 0k<i0\le k<i,其中 ii 是当前操作编号。

输入格式

第一行包含两个整数 n,mn,m

接下来 mm 行,每行描述一个操作。操作 2 后有一个整数 kk,其余操作后有两个整数 a,ba,b

输出格式

对于每个操作 3,输出一行一个整数表示答案。

样例输入

5 6
1 1 2
3 1 2
2 0
3 1 2
2 1
3 1 2

样例输出

1
0
1

数据范围

对于全部数据,1n1051\le n\le10^51m2×1051\le m\le2\times10^51a,bn1\le a,b\le n,回退操作满足 0k<i0\le k<i

所有测试点均独立计分且分值相同。

子任务编号 分值 特殊限制
1 20 n,m2000n,m\le2000
2 40 不含操作 2
3 无特殊限制