luogu#P5489. EntropyIncreaser 与 动态图

    ID: 9512 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>洛谷原创动态树树链剖分树剖Link-Cut TreeLCT

EntropyIncreaser 与 动态图

题目背景

话说 NaCly_Fish 在和 EntropyIncreaser\mathsf E \color{red}\mathsf{ntropyIncreaser} 吃饭时,问过她一个问题:“一个无向图,支持动态加边,求两点间割点数,怎么做?”

EntropyIncreaser\mathsf E \color{red} \mathsf{ntropyIncreaser} 想了几秒,说:“这不是sb题吗,随便怎么做都行吧。”然后三两句道出了一个算法。

而 NaCly_Fish 还是不会,请你来教教她这题怎么做吧。

题目描述

有一个 nn 个点的图,初始没有边。
qq 个操作,分为 33 种,具体如下:

  • 1 u v 表示在 u,vu,v 之间连一条无向边
  • 2 u v 表示求 u,vu,v 间的割边数量
  • 3 u v 表示求 u,vu,v 间的割点数量

特别地,对于 2233 操作,若 u,vu,v 不连通,则输出 1-1


为了防止有歧义,这里给出对两点间割边和割点数量的定义:
对于所有包含 u,vu,v 的路径的节点集合之交 SS ,定义 SS 中的元素数量为 u,vu,v 间的割点数。
对于所有包含 u,vu,v 的路径的边集合之交 TT ,定义 TT 中的元素数量为 u,vu,v 间的割边数。


本题强制在线。
从第二行开始,每次的输入的 u,vu,v 都需要异或上 last\text{last} ,才是实际操作的 u,vu,v
last\text{last} 为最近一次答案非 1-1询问的答案,定义初始 last=0\text{last}=0
ps:如果您不知道异或是什么意思,可以看这里:xor

输入格式

第一行两个正整数 n,qn,q,表示节点数和操作次数。
接下来 qq 行,每行三个整数,表示一次操作。

输出格式

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

5 10
1 1 2
1 2 3
2 1 3
3 0 1
1 3 1
1 1 6
2 3 7
1 6 7
1 7 1
3 3 6
2
2
-1
3

提示

题目背景为真实事件

样例说明:

实际操作为:

5 10
1 1 2
1 2 3
2 1 3
3 2 3
1 1 3
1 3 4
2 1 5
1 4 5
1 5 3
3 1 4

【数据范围】

对于 20%20\% 的数据,1n,q20001\le n,q \le 2000
对于另外 30%30\% 的数据,所有 2233 操作均在 11 操作之后;
对于 100%100\% 的数据,1n1051\le n \le 10^51q3×1051\le q \le 3\times 10^5

对于 11 操作,保证 uvu\neq v

By:NaCly_Fish


欢迎加入 EI队长粉丝裙,群号:747262201747262201