#lg11993. [JOIST 2025] 迁移计划 / Migration Plan

[JOIST 2025] 迁移计划 / Migration Plan

AdditionalFile5054.zip

#5054. 「JOISC 2025 Day4」迁移计划

标签: 传统 | 时间限制: 7500 ms | 内存限制: 2048 MiB |

题目描述

题目译自 JOISC 2025 Day4 T2 「移住計画 / Migration Plan

JOI 国有 NN 座城市,编号从 11NN,通过 N1N-1 条单向道路连接。具体来说,对于每座城市 ii (2iN)(2 \leq i \leq N),有一条从 iiPiP_i 的路,且 1Pi<i1 \leq P_i < i

每座城市有其危险度。首都 11 的危险度为 00,而城市 ii (2iN)(2 \leq i \leq N) 的危险度定义为从 ii11 的路径上道路数。JOI 国的结构保证每座城市到 11 的路径唯一。

目前,城市 ii (1iN)(1 \leq i \leq N) 居住着 KiK_i 只海狸。JOI 国总统比太郎制定了一项为期 QQ 天的移居计划,每天发生以下三种事件之一:

  1. 移居:危险度为 XjX_j 的城市中的所有海狸,移居到通过若干道路可达的危险度为 YjY_j (0Yj<Xj)(0 \leq Y_j < X_j) 的城市,移居目标因结构唯一。
  2. 接纳移民:城市 AjA_j 的海狸数增加 LjL_j 只,因 JOI 国外部移民到来。
  3. 调查:统计当时城市 BjB_j 的海狸数量。

作为比太郎的助手,你发现无需实地走访,仅凭移居计划信息就能计算每次调查的结果。

给定 JOI 国结构、初始海狸数和移居计划,编写程序计算每次调查的答案。

输入格式

第一行包含一个整数 NN

第二行包含用空格分隔的 N1N-1 个整数 P2,P3,,PNP_2,P_3,\ldots ,P_N

第三行包含用空格分隔的 NN 个整数 K1,K2,,KNK_1,K_2, \ldots ,K_N

第四行包含一个整数 QQ

接下来 QQ 行,每行描述了一个事件,包含若干空格分隔的整数。令第一个数为 TjT_j,格式如下:

  • Tj=1T_j = 1:后接 Xj,YjX_j, Y_j,表示移居事件,危险度 XjX_j 的海狸移至危险度 YjY_j
  • Tj=2T_j = 2:后接 Aj,LjA_j, L_j,表示接纳移民,城市 AjA_j 增加 LjL_j 只海狸。
  • Tj=3T_j = 3:后接 BjB_j,表示调查事件,查询城市 BjB_j 的海狸数。

输出格式

对于每个 Tj=3T_j = 3 (1jQ)(1 \leq j \leq Q) 的调查事件,按顺序输出一行,表示当时城市 BjB_j 的海狸数。

样例 1

输入

4
1 1 2
1 3 4 3
6
3 1
1 1 0
3 1
3 2
1 2 1
3 2

输出

1
8
0
3

最初,城市 1,2,3,41, 2, 3, 4 分别居住着 1,3,4,31, 3, 4, 3 只海狸。各城市的危险度分别为 0,1,1,20, 1, 1, 2

11 天是调查事件。因此,第一行输出此时城市 11 的海狸数量,即 11

22 天是移居事件。此时,城市 22 的海狸全部移居到城市 11。同时,城市 33 的海狸也全部移居到城市 11。第 22 天结束后,城市 1,2,3,41, 2, 3, 4 分别居住着 8,0,0,38, 0, 0, 3 只海狸。

33 天是调查事件。因此,第二行输出此时城市 11 的海狸数量,即 88

44 天是调查事件。因此,第三行输出此时城市 22 的海狸数量,即 00

55 天是移居事件。此时,城市 33 的海狸全部移居到城市 22。第 55 天结束后,城市 1,2,3,41, 2, 3, 4 分别居住着 8,3,0,08, 3, 0, 0 只海狸。

66 天是调查事件。因此,第四行输出此时城市 22 的海狸数量,即 33

这个样例满足子任务 2,3,4,5,6,72,3,4,5,6,7 的限制。

样例 2

输入

3
1 1
3 1 4
11
2 2 5
1 2 0
3 1
1 1 0
3 1
3 2
2 3 4
3 3
1 1 0
3 3
3 1

输出

3
13
0
4
0
17

最初,城市 1,2,31, 2, 3 分别居住着 3,1,43, 1, 4 只海狸。各城市的危险度分别为 0,1,10, 1, 1

11 天是移民接收事件。城市 22 的海狸数量增加 55 只。第 11 天结束后,城市 1,2,31, 2, 3 分别居住着 3,6,43, 6, 4 只海狸。

22 天是移居事件。此时,危险度为 22 的城市没有海狸居住,因此没有移动发生。

33 天是调查事件。因此,第一行输出此时城市 11 的海狸数量,即 33

44 天是移居事件。此时,城市 22 的海狸全部移居到城市 11。同时,城市 33 的海狸也全部移居到城市 11。第 44 天结束后,城市 1,2,31, 2, 3 分别居住着 13,0,013, 0, 0 只海狸。

55 天是调查事件。因此,第二行输出此时城市 11 的海狸数量,即 1313

66 天是调查事件。因此,第三行输出此时城市 22 的海狸数量,即 00

77 天以后同样会发生事件,但这里省略说明。

这个样例满足子任务 1,2,3,71,2,3,7 的限制。

样例 3

输入

7
1 2 1 3 3 2
5 2 8 9 4 0 5
10
1 3 1
2 4 10
3 2
1 6 3
1 2 0
3 1
3 4
2 5 6
3 5
3 3

输出

6
18
19
6
0

这个样例满足子任务 2,3,5,72,3,5,7 的限制。

数据范围与提示

对于所有输入数据,满足:

  • 2N20000002 \leq N \leq 2000000
  • 1Pi<i(2iN)1 \leq P_i < i \, (2 \leq i \leq N)
  • 0Ki100(1iN)0 \leq K_i \leq 100 \, (1 \leq i \leq N)
  • 1Q20000001 \leq Q \leq 2000000
  • Tj{1,2,3}(1jQ)T_j \in \{1, 2, 3\} \, (1 \leq j \leq Q)
  • Tj=1T_j = 1 时,0Yj<XjN1(1jQ)0 \leq Y_j < X_j \leq N-1 \, (1 \leq j \leq Q)
  • Tj=2T_j = 2 时,$1 \leq A_j \leq N, 1 \leq L_j \leq 100 \, (1 \leq j \leq Q)$
  • Tj=3T_j = 3 时,1BjN(1jQ)1 \leq B_j \leq N \, (1 \leq j \leq Q)
  • 至少存在一个 Tj=3T_j = 3
  • 所有输入为整数

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 44 D=1D = 1
22 88 N20N \leq 20
33 1313 D20D \leq 20
44 1515 Tj2(1jQ)T_j \neq 2 \, (1 \leq j \leq Q),调查次数 5\leq 5
55 1515 调查次数 5\leq 5
66 2727 Tj2(1jQ)T_j \neq 2 \, (1 \leq j \leq Q)
77 1818 无附加限制