#loj5423. 「OOI 2017 Day 1」布谷鸟
「OOI 2017 Day 1」布谷鸟
[AdditionalFile5423.zip](file://AdditionalFile5423.zip?type=additional_file)
#5423. 「OOI 2017 Day 1」布谷鸟
标签: 传统 | 时间限制: 2000 ms | 内存限制: 512 MiB |
题目描述
题目译自 Open Olympiad in Informatics 2017 Day1 T1 「Кукушки / Cuckoos」。
英国科学家决定研究鸟类学,并观察一种特殊的布谷鸟的生活。为此,他们种植了一棵树,并在树上建造了 个巢穴,每个巢穴中都住着一只布谷鸟。观察树木的过程包括在某些时刻评估是否可以将某个特定的蛋放入某个布谷鸟的巢穴中。
每个蛋只能在两个特定的巢穴中孵化。每个蛋由一对无序的不同数字 表示。蛋 可以在巢穴 或 中孵化,而不能在其他巢穴中孵化。注意,蛋 与蛋 是相同的。
现在描述将蛋放入现有巢穴的过程:假设科学家想将蛋 放入巢穴 。如果巢穴 中没有蛋,那么蛋 直接留在该巢穴中,此步骤的过程结束。如果巢穴 中已经有一个蛋 ,那么布谷鸟会将蛋 放入该巢穴,同时尝试将蛋 以类似方式放入巢穴 ,此过程继续进行。
你需要回答科学家提出的问题。总共有三种类型的问题:
- (理论性)如果将蛋 放入巢穴 ,过程是否会结束?由于这是一个纯理论问题,蛋 不会实际添加,巢穴状态不变。
- (实践性)如果将蛋 放入巢穴 ,过程是否会结束?如果过程结束,蛋将 实际添加,按照描述的过程进行操作。
- (理论性)存在多少 有序 数字对 ,使得蛋 可以放入巢穴 ,并考虑当前巢穴中已有的蛋?每个蛋的答案独立于其他添加的蛋计算。
输入格式
第一行输入三个整数 $(2 \leq n \leq 200000, 0 \leq m \leq n, 1 \leq q \leq 600000)$,其中 表示树上巢穴的数量, 表示科学家已经放入的蛋的数量, 表示科学家提出的问题数量。
接下来的 行,每行包含两个数字 和 ,表示巢穴 中有一个蛋 。保证所有 均不同,且对于所有 ,。
接下来的 行描述科学家的问题。问题的顺序即为需要回答的顺序。每行第一个数字 表示问题的类型。
- 如果 或 ,则接下来是两个不同的数字 和 ,描述问题中涉及的蛋。
- 如果 ,则不需要将蛋添加到当前巢穴配置中。
- 如果 ,则如果添加过程需要有限次移动,需将蛋实际添加。
- 如果 ,则需计算有序对 的数量,使得蛋 可以放入巢穴 ,且过程最终会结束。实际中不添加任何蛋到配置中。
输出格式
对于每个第一类和第二类问题,输出 Yes 或 No,表示移动过程是否会结束。
对于每个第三类问题,输出所需有序对的数量。
样例
输入
5 3 8
1 2
5 1
2 4
1 1 2
3
2 1 2
3
2 4 2
2 5 3
3
1 4 5
输出
Yes
20
Yes
8
No
Yes
0
No
在题目示例中的初始蛋分布如下:巢穴 中有蛋 ,巢穴 中有蛋 ,巢穴 中有蛋 ,巢穴 和 中没有蛋。
蛋 可以添加,尽管树上已经有一个这样的蛋,这会导致已有蛋 被移动到另一个巢穴。
此外,在初始配置中可以添加 个巢穴对应的 个蛋中的任意一个,每个蛋可以放入其对应的两个巢穴中的任何一个,且对于任何添加的蛋和巢穴,过程都需要有限步数。因此,第二个问题的答案为 。
在随后的问题中,蛋 将被实际添加,蛋的分布变为:巢穴 中有蛋 ,巢穴 中也有蛋 ,巢穴 中有蛋 ,巢穴 中有蛋 。
此时,只能添加蛋 ,且每个蛋仍可放入其对应的两个巢穴中,因此该问题的答案为 。
蛋 无法添加到树上,因此巢穴状态不变。
添加蛋 需要 次蛋的移动,之后无法再以有限步数添加任何新蛋。
数据范围与提示
设 表示第一类问题的数量, 表示第二类问题的数量, 表示第三类问题的数量。
详细子任务附加限制及分值如下表所示。其中子任务 是样例。
| 子任务 | 分值 | 附加限制 | 子任务依赖 | 备注 |
|---|---|---|---|---|
| ,,, | ||||
| ,,, | ||||
| ,,, | ||||
| ,, | ||||
| ,, | ||||
| ,, |