CF1466D.13th Labour of Heracles

传统题 时间 2000 ms 内存 256 MiB 8 尝试 1 已通过 1 标签

13th Labour of Heracles

题目描述

你可能听说过赫拉克勒斯的十二项任务,但你知道第十三项吗?人们普遍认为他花了十二年完成这十二项壮举,平均每年完成一项。如今时光流转得更快,你只有几分钟而不是几个月来完成这个任务。你能做到吗?

本题中,给定一棵有 nn 个带权顶点的树。树是一个包含 n1n-1 条边的连通图。

我们定义其 kk 染色为:将 kk 种颜色分配给树的边,使得每条边恰好被分配一种颜色。注意,你不必使用所有 kk 种颜色。

对于颜色 xx 的子图,包含原树中被分配为颜色 xx 的所有边,以及所有与这些边相连的顶点(即这些顶点的度数不为 00)。因此,子图中没有度数为 00 的顶点。

一个连通分量的价值定义为其所有顶点权值之和。一个子图的价值定义为其所有连通分量价值的最大值。我们约定空子图的价值为 00

kk 染色的价值定义为所有 kk 种颜色对应子图的价值之和。给定一棵树,对于每个 kk11n1n-1,计算该树的最大 kk 染色价值。

输入格式

输入的第一行包含一个整数 tt1t1051 \leq t \leq 10^5),表示测试用例的数量。接下来是 tt 个测试用例。

每个测试用例的第一行包含一个整数 nn2n1052 \leq n \leq 10^5)。第二行包含 nn 个整数 w1,w2,,wnw_1, w_2, \dots, w_n0wi1090 \leq w_i \leq 10^9),其中 wiw_i 表示第 ii 个顶点的权值。接下来的 n1n-1 行,每行包含两个整数 u,vu, v1u,vn1 \leq u, v \leq n),表示顶点 uuvv 之间有一条边。保证这些边构成一棵树。

所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每个测试用例,输出一行,包含 n1n-1 个整数,用空格隔开。第 ii 个数表示该树的最大 ii 染色价值。

说明/提示

第一个测试用例的最优染色方案如下:


11 染色中,所有边都被赋予相同的颜色。颜色 11 的子图包含原图的所有边和顶点,因此其价值为 3+5+4+6=183+5+4+6=18


在最优的 22 染色中,边 (2,1)(2,1)(3,1)(3,1) 被赋予颜色 11,边 (4,3)(4,3) 被赋予颜色 22。因此,颜色 11 的子图是一个连通分量(顶点 1,2,31,2,3),其价值为 3+5+4=123+5+4=12。颜色 22 的子图包含两个顶点和一条边,其价值为 4+6=104+6=10


在最优的 33 染色中,所有边都被赋予不同的颜色。因此,每种颜色的子图都只包含一条边。它们的价值分别为:3+4=73+4=74+6=104+6=103+5=83+5=8

由 ChatGPT 4.1 翻译

样例

4
4
3 5 4 6
2 1
3 1
4 3
2
21 32
2 1
6
20 13 17 13 13 11
2 1
3 1
4 1
5 1
6 1
4
10 6 6 6
1 2
2 3
4 1
18 22 25
53
87 107 127 147 167
28 38 44

在线编程 IDE

建议全屏模式获得最佳体验