luogu#P11519. [CCO 2024] Telephone Plans

[CCO 2024] Telephone Plans

题目背景

翻译自 CCO2024P6题

题目描述

CCO 国现在由唯一的电话服务商多米通提供服务。CCO 国有 NN 个房屋,编号从 11NN。每条电话线连接两栋不同的房屋,所有曾经存在过的电话线都不会形成回路(就像树一样)。

但是每条电话线只能在一段时间内使用。如果在某个时刻,房屋之间存在着由电话线连接的路径,那么这两个房屋就可以互相通话。

QQ 个查询,查询格式如下:

  • 1 x y:在房屋 xxyy 之间添加一条电话线。保证之前没有在 xxyy 之间添加过电话线。
  • 2 x y:移除房屋 xxyy 之间存在的电话线。
  • 3 t:计算在最后 tt 个查询这一段时间内至少有一个时刻能互相通话的房屋对数。更准确地说,记 GqG_q 为第 qq 个查询之后 CCO 国的状态,G0G_0 为没有任何查询之前的状态。如果是第 ss 个查询,则计算在 Gst,Gst+1,,GsG_{s-t},G_{s-t+1}, \ldots ,G_st+1t + 1 个状态中的至少一个状态中能够互相通话的房屋对数。

部分测试用例会被加密。对于加密的测试用例,参数 xxyytt 会和上一个类型为 33 的查询的答案进行异或等于(C++ 中的 ^=)操作(如果还没有过类型为 33 的查询,则认为上一个答案为 00)。

输入格式

第一行输入一个数字 E (E{0,1})E\ (E \in\{0,1\})E=0E=0 表示输入没有加密,E=1E=1 表示输入加密。

第二行包含两个空格分隔的整数 NNQQ,分别代表 CCO 国的房屋数量和查询数量。

接下来的 QQ 行包含如上所述的查询。

对于第 q (1qN)q\ (1 \leq q \leq N) 个查询,保证解密后(如果 E=1E=1):对于类型 1122 的查询,1x,yN1 \leq x, y \leq N;对于类型 33 的查询,0tq0 \leq t \leq q

输出格式

对于每个类型为 33 的查询,单独一行输出查询的答案。

0
4 12
3 0
1 1 2
3 0
1 1 3
3 0
3 5
2 2 1
3 0
3 8
1 1 4
3 0
3 11
0
1
3
3
1
3
3
5
1
4 12
3 0
1 1 2
3 0
1 0 2
3 1
3 6
2 1 2
3 3
3 9
1 2 7
3 3
3 8
0
1
3
3
1
3
3
5

提示

子任务 分值 限制 是否加密
11 1212 1N30,1Q1501 \leq N \leq 30,1 \leq Q \leq 150
22 88
33 1616 1N2000,1Q60001 \leq N \leq 2000,1 \leq Q \leq 6000
44 88
55 1616 1N105,1Q3×1051 \leq N \leq 10^5,1 \leq Q \leq 3\times 10^5
66 2020
77 $1 \leq N \leq 5 \times 10^5,1 \leq Q \leq 1.5\times 10^6$