数据结构与算法专题题库

1030. 高级并查集

单点时限: 4.0 sec

内存限制: 512 MB

给定 $n$ 个节点和 $m$ 个操作,每个操作可能为以下 $4$ 种之一:

  • 1 x y:合并 $x$ 所在的集合和 $y$ 所在的集合,如果 $x$ 和 $y$ 已经在同一集合中,则操作无效。
  • 2 x y:判断 $x$ 和 $y$ 是否在同一个集合中。
  • 3 x:计算 $x$ 所在集合的元素个数。
  • 4 x:将 $x$ 从 $x$ 所在的集合中移除,单独形成一个新的集合,如果 $x$ 本来就单独在一个集合中,则操作无效。

初始时,每个节点(从 $1$ 开始编号)单独在一个集合中。

输入格式

第一个两个数 $n,m$ 。

接下来 $m$ 行,每行一个操作。

输出格式

对于所有2操作,输出1表示 $x$ 和 $y$ 在同一个集合中,否则输出0。

对于所有3操作,输出1个数表示集合大小。

样例

Input
2 4
1 1 2
2 1 2
4 2
3 1
Output
1
1

提示

对于$30\%$数据满足:$1 \leq n,m \leq 10^3$。

对于$50\%$数据满足:$1 \leq n,m \leq 10^6$,且没有4操作。

对于$70\%$数据满足:$1 \leq n,m \leq 10^6$,且操作4的个数小于$100$个。

对于$100\%$数据满足:$1 \leq n,m \leq 10^6,1 \leq x < y \leq n$。

不限期开放

题目列表