CF2143C.Max Tree

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一棵包含 nn 个顶点的树,顶点编号为 11 到 nn。树的每一条边都关联着两个非负整数 xx 和 yy。

考虑 11 到 nn 的一个排列 pp,其中 pip_i 表示分配给顶点 ii 的值。

对于一条边 (u,v)(u, v),满足 u<vu < v 且关联的值为 xx 和 yy,其贡献定义如下:

{x如果 pu>pv,y否则。\begin{cases} x & \text{如果 } p_u > p_v, \\ y & \text{否则。} \end{cases}

该排列的值为所有边的贡献之和。

你的任务是找出任意一个使得总值最大的排列 pp。

注:长度为 nn 的排列是 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2, 3, 1, 5, 4] 是一个排列,但 [1,2,2][1, 2, 2] 不是排列(22 出现了两次),[1,3,4][1, 3, 4] 也不是排列(n=3n = 3,数组中却有 44)。

输入格式

每个测试包含多组数据。第一行为测试组数 tt(1≤t≤1041 \le t \le 10^4)。各测试组的描述如下。

第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5),表示树的顶点数。

接下来的 n−1n-1 行,每行包含四个整数 u,v,x,yu, v, x, y(1≤u<v≤n1 \le u < v \le n,1≤x,y≤1091 \le x, y \le 10^9),表示一条连接 uu 和 vv 的边,以及其关联的值 xx 和 yy。保证这些边构成一棵树。

保证所有测试组中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试组,输出一个 11 到 nn 的排列 pp,最大化题目定义的总值。若有多解,输出任意一个均可。

输入输出样例

  • 输入#1

    3
    3
    1 2 2 1
    2 3 3 2
    5
    1 2 1 3
    1 5 2 1
    2 4 5 7
    2 3 1 100
    5
    2 5 5 2
    3 5 4 6
    4 5 1 5
    1 5 3 5

    输出#1

    3 2 1 
    2 3 5 4 1 
    1 5 2 3 4

说明/提示

样例解释:

第一组测试:

考虑排列 p=[3,2,1]p = [3, 2, 1],其值为 5=2+35 = 2 + 3,具体如下:

  • 由于 p1>p2p_1 > p_2,第一条边贡献 +2+2。
  • 由于 p2>p3p_2 > p_3,第二条边贡献 +3+3。

其它一些排列的值如下:

  • p=[1,2,3]p = [1, 2, 3],值为 1+2=31 + 2 = 3。
  • p=[1,3,2]p = [1, 3, 2],值为 1+3=41 + 3 = 4。
  • p=[3,1,2]p = [3, 1, 2],值为 2+2=42 + 2 = 4。

第二组测试:

排列 p=[2,3,5,4,1]p = [2, 3, 5, 4, 1] 的值为 3+2+7+100=1123 + 2 + 7 + 100 = 112。另一个可行答案是 p=[2,3,4,5,1]p = [2, 3, 4, 5, 1]。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页