#CF2229I. 端序 / The Endians

端序 / The Endians

题目描述

给定一棵 nn 个点的树,第 ii 个点的权值为 wiw_i,并给定整数 kk

对于每个可能的根 xx,需要选择一个大小为 kk 的点集 SS,且必须满足 xSx \in S

f(i)f(i) 表示从点 ii 到根的路径上所有属于 SS 的点的权值和,请最大化:

iSf(i)\sum_{i \in S} f(i)

对每个根 xx 输出对应的最大值。

输入格式

每个测试包含多组测试数据。

第一行包含整数 tt1t5001 \le t \le 500)。

每组测试数据第一行包含两个整数 n,kn,k2n40002 \le n \le 40001kn1 \le k \le n)。

第二行包含 nn 个整数 w1,w2,,wnw_1,w_2,\ldots,w_n1wi1091 \le w_i \le 10^9)。

接下来 n1n-1 行,每行包含两个整数 u,vu,v1u,vn1 \le u,v \le n),表示树上的一条边。

保证给出的图是一棵树,且所有测试数据的 nn 之和不超过 40004000

输出格式

对于每组测试数据,输出 nn 个整数。对每个 x=1,2,,nx=1,2,\ldots,n,输出以 xx 为根时所有合法集合 SS 的最大得分。

样例 1

3
6 3
2 12 3 6 9 7
1 2
1 3
3 4
4 5
4 6
5 5
10000 1000 100 10 1
1 2
2 3
3 4
3 5
9 5
7 11 5 16 13 10 12 9 15
8 1
1 6
3 7
4 6
6 7
6 5
9 1
2 8
27 57 30 39 51 45
54311 15311 12511 12451 12415
120 150 134 170 155 122 150 132 162

约束与提示

  • 时间限制:2 秒

  • 内存限制:1024 MB

  • 原题编号:CF2229I