CF2219D MEX Replacement on Tree

题目描述

给定一棵以 $1$ 为根、共有 $n$ 个结点的树,以及一个长度为 $n$ 的排列 $p$,其中包含整数 $0, 1, \ldots, n-1$,$p_v$ 表示结点 $v$ 的权值。 设 $S_v$ 表示从 $1$ 到 $v$ 的路径上的所有结点权值所组成的集合。定义函数 $f$,使得 $f(v) = \mathrm{MEX}(S_v)$,即从根到结点 $v$(包含 $v$)路径上的权值集合的 $\mathrm{MEX}$。其中,集合 $c_1, c_2, \ldots, c_k$ 的 $\operatorname{MEX}$ 表示所有未出现在集合 $c$ 中的最小非负整数 $x$。 此外,给出如下操作: - 选择一个整数 $v$($1 \leq v \leq n$),并将 $f(v)$ 赋值给 $p_v$。 你的目标是,在至多执行一次上述操作(也可以不执行任何操作)后,找到 $\sum\limits_{v = 1}^n f(v)$ 的最大值。

输入格式

每组测试数据包含多组测试用例。第一行输入一个整数 $t$($1 \le t \le 2 \cdot 10^4$),表示测试用例的组数。 每组测试数据的第一行输入一个整数 $n$($1 \le n \le 2 \times 10^5$),表示树的结点个数。 第二行输入 $n$ 个整数 $p_1, p_2, \ldots, p_n$($0 \le p_i \le n - 1$),为数组 $p$ 的元素。保证 $0$ 到 $n-1$ 的每一个整数恰好出现一次。 接下来输入 $n-1$ 行,每行两个整数 $x_i$ 和 $y_i$($1 \le x_i, y_i \le n$),表示在结点 $x_i$ 和 $y_i$ 之间有一条边。保证这些边构成一棵树。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一行一个整数:表示在最多执行一次操作(也可以不操作)后,$\sum\limits_{v = 1}^n f(v)$ 的最大值。

说明/提示

在第一个样例中,不进行任何操作最优,因此答案为 $1$。 在第二个样例中,具体分析如下: - $f(1) = \mathrm{MEX}(\{p_1\}) = \mathrm{MEX}(\{1\}) = 0$ - $f(2) = \mathrm{MEX}(\{p_1, p_2\}) = \mathrm{MEX}(\{1, 0\}) = 2$ - $f(3) = \mathrm{MEX}(\{p_1, p_3\}) = \mathrm{MEX}(\{1, 2\}) = 0$ 有以下选择: 1. 不做任何操作,$\sum\limits_{v = 1}^n f(v) = 2$ 2. 在结点 $1$ 上执行操作,将 $f(1) = 0$ 赋值给 $p_1$,则 $f(1), f(2), f(3)$ 变为 $1$,总和变为 $3$ 3. 在结点 $2$ 上执行操作,将 $f(2) = 2$ 赋值给 $p_2$,则 $f(2)$ 变为 $0$,总和变为 $0$ 4. 在结点 $3$ 上执行操作,将 $f(3) = 0$ 赋值给 $p_3$,则 $f(3)$ 变为 $2$,总和变为 $4$ 因此答案为 $4$,在结点 $3$ 上执行操作。 由 ChatGPT 5 翻译