CF2258F Plus Minus Tree
题目描述
给定一棵有 $n$ 个节点的树 $T$,以节点 $1$ 为根。每个节点 $v$ 被赋予初始权值 $a_v \in \{ -1, 0, +1 \}$。
对于每一个权值为 $0$ 的节点,你需要为其重新分配一个权值,选择 $-1$ 或 $+1$。记 $x_v$ 为节点 $v$ 的最终权值。
对于每个节点 $v$,设 $T_v$ 为以 $v$ 为根的子树的所有节点集合。节点 $v$ 的代价定义为
$$
S_v = \left| \sum_{u \in T_v}{x_u} \right|.
$$
整棵树的总代价定义为所有节点的代价之和。请在你为所有初始权值为 $0$ 的节点分配权值之后,求出树的最小总代价是多少。
*注:*
- 树是一种无环连通图。根树是指定一个节点为根节点的树。
- 节点 $v$ 的子树为包含 $v$、其所有后代节点以及这些节点间所有边的子图。节点 $u$ 是节点 $v$ 的后代,若 $v$ 是 $u$ 的祖先。节点不是自己的后代。$v$ 的祖先为从 $v$ 到根节点(包含根节点但不包含 $v$)路径上的所有节点。根节点没有祖先。
输入格式
每组测试数据包含多个测试用例。第一行为测试用例数 $t$($1 \le t \le 10^4$)。每组测试用例格式如下:
第一行为一个整数 $n$($2 \le n \le 2 \times 10^5$),表示树的节点数。
第二行为 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-1 \le a_i \le 1$)。
接下来 $n-1$ 行,每行两个整数 $u$ 和 $v$($1 \le u, v \le n$),表示树的一条边,连接 $u$ 和 $v$。
保证输入的边构成一棵树。
保证所有测试用例 $n$ 之和不超过 $2 \times 10^5$。
输出格式
对于每组测试用例,输出一行,表示最小总代价。
说明/提示
对于第一个测试用例,最佳赋值为 $[+1, +1, -1, -1, +1]$ 和 $[-1, +1, -1, -1, +1]$,其总代价为 $5$。
另一种赋值 $[+1, +1, -1, +1, +1]$ 的总代价为 $9$,$[-1, +1, -1, +1, +1]$ 的总代价为 $7$。


第一个测试用例的树形结构
第二个测试用例的树形结构
由 ChatGPT 5 翻译