#lg11477. [COCI 2024/2025 #3] 林卡树 / Stablo
[COCI 2024/2025 #3] 林卡树 / Stablo
#5706. 「COCI 2024/2025 #3」Stablo
标签: 传统 | 时间限制: 2000 ms | 内存限制: 512 MiB |
题目描述
译自 COCI 2024/2025 Contest #3 T4「Bojanje」
Toni 决定为 HONI(和 COCI)出一道题。由于他不喜欢小孩子,他决定让这道题尽可能难。他想出了一个涉及不断变化的树的复杂问题,纯粹是为了让参赛者尽可能痛苦。
给定一棵带有 个节点的无权树,树的根节点为 。每个节点都有一个对应的值 。树的结构通过数组 定义,其中对于每个 , 表示节点 的父节点。
对于树中的节点 ,函数 定义为:
其中 表示节点 和 之间的距离, 包含以 为祖先的所有节点。
给定 个查询,每个查询包含两个节点 和 。对于每个查询,必须在树中模拟以下变换,并计算函数 :
- 将所有以 为父节点的节点重新挂载到 的父节点下。
- 从树中移除 。
- 将节点 插回树中,置于 和 原所属子树中 的后代之间。
如果 是 的父节点,则树保持不变。保证 始终位于 的子树中。对于每个查询,必须在按照上述过程对树进行临时修改后计算 的值。树的修改不是永久的,即每次查询后,树都会恢复到原始状态。
输入格式
第一行包含两个整数 和 ,分别表示树中节点的数量和查询的数量。
第二行包含 个整数 ,表示每个节点的值。
第三行包含 个整数 ,其中 表示节点 的父节点。
接下来的 行中,每行包含两个整数 和 ,表示涉及上述操作的节点。
输出格式
在接下来的 行中,输出修改后树上函数 的值。
样例 1
输入
3 1
1 2 3
1 2
3 1
输出
7
在树上应用该操作后,节点 距离节点 的距离为 ,节点 距离节点 的距离为 。计算结果为 。
样例 2
输入
3 2
4 5 6
1 1
2 1
3 1
输出
11
11
样例 3
输入
5 3
2 5 2 2 2
1 2 3 2
4 3
3 2
5 1
输出
2
8
26
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 树是一条链,,对于每一个从 到 的 | ||
| 每个节点最多有 个子节点 | ||
| 无附加限制 |
相关
在下列比赛中: