#P53. Classical Data Structure——Link Cut Tree

Classical Data Structure——Link Cut Tree

题目描述

  在一幅有$N$个点,没有边的图中,我们可以执行$Q$次操作,操作如下:

$1$ $u$ $v$:增加一条连接$u$、$v$两点的无向边。

$2$ $u$ $v$:查询$u$、$v$两点是否在同一个连通块内,在同一个连通块内输出"YES",否则"NO"。

$3$ $u$:查询$u$点所在的连通块内有多少个节点。

输入格式

第一行,输入两个整数$N,Q(1≤N,Q≤5 \times 10^5)$。

接下去$Q$行,为操作,保证输入的操作合法,操作模式$1≤op≤3$,且输入的$u,v$满足$1≤u,v≤N$。

输出格式

对于每个查询操作,输出一行表示答案。如果操作为$2$,输出"YES"或者"NO";如果操作为$3$,输出一个正整数表示连通块内的节点数。

样例

5 7
1 1 2
1 3 4
2 2 3
1 2 4
2 2 3
3 5
3 2
NO
YES
1
4

来源

2022 HGNU-SWUT暑假联合集训