CF2143C Max Tree
题目描述
给定一棵包含 $n$ 个顶点的树,顶点编号为 $1$ 到 $n$。树的每一条边都关联着两个非负整数 $x$ 和 $y$。
考虑 $1$ 到 $n$ 的一个排列 $p$,其中 $p_i$ 表示分配给顶点 $i$ 的值。
对于一条边 $(u, v)$,满足 $u < v$ 且关联的值为 $x$ 和 $y$,其贡献定义如下:
$$
\begin{cases}
x & \text{如果 } p_u > p_v, \\
y & \text{否则。}
\end{cases}
$$
该排列的值为所有边的贡献之和。
你的任务是找出任意一个使得总值最大的排列 $p$。
注:长度为 $n$ 的排列是 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2, 3, 1, 5, 4]$ 是一个排列,但 $[1, 2, 2]$ 不是排列($2$ 出现了两次),$[1, 3, 4]$ 也不是排列($n = 3$,数组中却有 $4$)。
输入格式
每个测试包含多组数据。第一行为测试组数 $t$($1 \le t \le 10^4$)。各测试组的描述如下。
第一行包含一个整数 $n$($2 \le n \le 2 \cdot 10^5$),表示树的顶点数。
接下来的 $n-1$ 行,每行包含四个整数 $u, v, x, y$($1 \le u < v \le n$,$1 \le x, y \le 10^9$),表示一条连接 $u$ 和 $v$ 的边,以及其关联的值 $x$ 和 $y$。保证这些边构成一棵树。
保证所有测试组中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试组,输出一个 $1$ 到 $n$ 的排列 $p$,最大化题目定义的总值。若有多解,输出任意一个均可。
说明/提示
**样例解释:**
第一组测试:
考虑排列 $p = [3, 2, 1]$,其值为 $5 = 2 + 3$,具体如下:
- 由于 $p_1 > p_2$,第一条边贡献 $+2$。
- 由于 $p_2 > p_3$,第二条边贡献 $+3$。
其它一些排列的值如下:
- $p = [1, 2, 3]$,值为 $1 + 2 = 3$。
- $p = [1, 3, 2]$,值为 $1 + 3 = 4$。
- $p = [3, 1, 2]$,值为 $2 + 2 = 4$。
第二组测试:
排列 $p = [2, 3, 5, 4, 1]$ 的值为 $3 + 2 + 7 + 100 = 112$。另一个可行答案是 $p = [2, 3, 4, 5, 1]$。
由 ChatGPT 5 翻译