最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • Max Tree

    正文概述 陈老师   2026-01-20 15:14:46  

    题目描述

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

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

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

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

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

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

    注:长度为 nn 的排列是 11nnnn 个不同整数按任意顺序组成的数组。例如,[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)。

    输入格式

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

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

    接下来的 n1n-1 行,每行包含四个整数 u,v,x,yu, v, x, y1u<vn1 \le u < v \le n1x,y1091 \le x, y \le 10^9),表示一条连接 uuvv 的边,以及其关联的值 xxyy。保证这些边构成一棵树。

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

    输出格式

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

    样例

    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
    
    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]

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » Max Tree