【模板】动态图连通性
题目背景
这是 [LOJ #122](https://loj.ac/problem/122) 的一个非官方、**不维护**的镜像,原始出题人是 EtaoinWu ,在本站的原始上传者未知。这个镜像题的数据不保证是最新的,因此推荐到 LOJ 进行练习。
题目描述
这是一道模板题。
你要维护一张无向简单图(即没有自环,没有重边的无向图)。你被要求加入删除一条边及查询两个点是否连通。
$0.$:加入一条边。保证它不存在。
$1.$:删除一条边。保证它存在。
$2.$:查询两个点是否联通。
为了保证做法的在线性,本题采用了特殊方式的读入。
假设你维护了一个变量 $\text{last}$,初始值为 $0$ 。
对于每个读入的节点 $x$,实际上询问、修改的节点编号是 $x \text{ xor } \text{last}$,其中 $\text{xor}$ 是二进制异或操作。
对于每次解码之后查询 $u,v$,如果它们联通,那么 $\text{last}$ 会被更新为 $u$;否则会被更新为 $v$。
输入输出格式
输入格式
输入的第一行是两个数 $n,m$。
接下来 $m$ 行,每一行三个数 $\text{op},x,y$。$\text{op}$ 表示操作编号。
输出格式
对于每一个$op=2$ 的询问,输出一行 `Y` 或 `N` ,表示两个节点是否连通。
输入输出样例
输入样例 #1
200 5
2 123 127
0 4 0
2 4 0
1 4 0
2 0 4
输出样例 #1
N
Y
N
输入样例 #2
4 10
0 1 2
0 2 3
0 3 1
2 1 4
0 0 7
2 5 0
1 3 2
2 0 5
1 0 2
2 0 5
输出样例 #2
N
Y
Y
N
说明
由于hack数据的加入,数据分布并非如下文所述。下面的仅供参考。
对于数据点 $1$,$n \leq 200,m \leq 200$
对于数据点 $2$,$n=5,m \leq 30$
对于数据点 $3$,$n=10,m \leq 1000$,其中查询的次数 $\geq 900$ 次。
对于数据点 $4$,$n=300,m \leq 50000$
对于数据点 $5$,$n=5000,m \leq 200000$,没有操作 $1$,其中约 $70 \%$ 是操作 $2$。
对于数据点 $6$,$n=5000,m \leq 200000$,没有操作 $1$,其中约 $70 \%$ 是操作 $0$。
对于数据点 $7$、$8$,$n=100,m \leq 500000$
对于数据点 $9$,$n=5000,m \leq 500000$,图是一棵树,其直径 $\leq 30$ 。
对于数据点 $10$, $n=5000,m \leq 500000$,图是一棵树,其每个点度数 $\leq 10$。
还有一些保证 $n \leq 5000,m \leq 500000$ 的附加数据。