P11519 [CCO 2024] Telephone Plans
题目背景
翻译自 [CCO](https://cemc.uwaterloo.ca/resources/past-contests?contest_category=80) 的 [2024P6题](https://dmoj.ca/problem/cco24p6)。
题目描述
CCO 国现在由唯一的电话服务商多米通提供服务。CCO 国有 $N$ 个房屋,编号从 $1$ 到 $N$。每条电话线连接两栋不同的房屋,所有曾经存在过的电话线都不会形成回路(就像树一样)。
但是每条电话线只能在一段时间内使用。如果在某个时刻,房屋之间存在着由电话线连接的路径,那么这两个房屋就可以互相通话。
$Q$ 个查询,查询格式如下:
- `1 x y`:在房屋 $x$ 和 $y$ 之间添加一条电话线。保证之前没有在 $x$ 和 $y$ 之间添加过电话线。
- `2 x y`:移除房屋 $x$ 和 $y$ 之间存在的电话线。
- `3 t`:计算在最后 $t$ 个查询这一段时间内至少有一个时刻能互相通话的房屋对数。更准确地说,记 $G_q$ 为第 $q$ 个查询之后 CCO 国的状态,$G_0$ 为没有任何查询之前的状态。如果是第 $s$ 个查询,则计算在 $G_{s-t},G_{s-t+1}, \ldots ,G_s$ 这 $t + 1$ 个状态中的至少一个状态中能够互相通话的房屋对数。
部分测试用例会被加密。对于加密的测试用例,参数 $x$,$y$ 和 $t$ 会和上一个类型为 $3$ 的查询的答案进行异或等于(C++ 中的 `^=`)操作(如果还没有过类型为 $3$ 的查询,则认为上一个答案为 $0$)。
输入格式
第一行输入一个数字 $E\ (E \in\{0,1\})$。$E=0$ 表示输入没有加密,$E=1$ 表示输入加密。
第二行包含两个空格分隔的整数 $N$ 和 $Q$,分别代表 CCO 国的房屋数量和查询数量。
接下来的 $Q$ 行包含如上所述的查询。
对于第 $q\ (1 \leq q \leq Q)$ 个查询,保证解密后(如果 $E=1$):对于类型 $1$ 和 $2$ 的查询,$1 \leq x, y \leq N$;对于类型 $3$ 的查询,$0 \leq t \leq q$。
输出格式
对于每个类型为 $3$ 的查询,单独一行输出查询的答案。
说明/提示
| 子任务 | 分值 | 限制 | 是否加密 |
| :----------: | :----------: | :----------: | :----------: |
| $1$ | $12$ | $1 \leq N \leq 30,1 \leq Q \leq 150$| 否 |
|$2$ | $8$ | $1 \leq N \leq 30,1 \leq Q \leq 150$| 是 |
|$3$ | $16$ | $1 \leq N \leq 2000,1 \leq Q \leq 6000$ | 否 |
|$4$ | $8$|$1 \leq N \leq 2000,1 \leq Q \leq 6000$ |是|
|$5$| $16$| $1 \leq N \leq 10^5,1 \leq Q \leq 3\times 10^5$|否|
|$6$| $20$| $1 \leq N \leq 10^5,1 \leq Q \leq 3\times 10^5$|是|
|$7$| $20$| $1 \leq N \leq 5 \times 10^5,1 \leq Q \leq 1.5\times 10^6$|是|