P12563 [UTS 2024] Remove Node

题目描述

给定一棵包含 $n$ 个顶点的有根树,每个顶点 $x$ 被赋予一个权值 $a_x$。树的根节点为 $1$ 号节点。 你可以执行以下操作:将两个相邻节点 $x$ 和 $y$ 合并为一个新节点 $z$,$z$ 的权值为这两个节点权值的最小值。该操作会将原本与 $x$ 或 $y$ 相连的边改为与 $z$ 相连。操作的成本为 $|a_x - a_y|$,多次操作的总成本为各次操作成本之和。 你需要处理两种查询: 1. $1\ x\ y$:将节点 $x$ 的权值更新为 $y$; 2. $2\ x$:询问将以 $x$ 为根的子树通过操作合并为单个节点的最小总成本。

输入格式

第一行包含一个整数 $n$ $(1 \le n \le 200\,000)$,表示节点数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ $(1 \le a_i \le 10^9)$,表示各节点的初始权值。 第三行包含 $n-1$ 个整数 $p_2, p_3, \dots, p_n$ ($1 \leq p_i \leq n$),其中 $p_i$ 表示节点 $i$ 的父节点。 第四行包含一个整数 $q$ $(1 \le q \le 200\,000)$,表示查询总数。 接下来 $q$ 行,每行一个查询: - $1\ x\ y$ ($1 \leq x \leq n$, $1\leq y \leq 10^9$); - 或 $2\ x$ ($1\leq x \leq n$)。

输出格式

对于每个类型为 $2$ 的查询,按输入顺序输出一行,表示对应查询的结果。

说明/提示

- ($4$ 分):$n \le 1000$,$q=1$; - ($13$ 分):$q=1$; - ($15$ 分):树为链状且仅包含第二类查询; - ($24$ 分):仅包含第二类查询; - ($12$ 分):$p_i=1$(所有非根节点的父节点均为根节点); - ($32$ 分):无额外限制。 翻译由 DeepSeek V3 完成