#C1007. 星图档案

星图档案

题目描述

星图馆保存着一份由 nn 个观测站组成的树形星图。第 ii 个观测站有一个能量值 wiw_i

现在需要为每一个观测站 xx 分别建立一份归档。建立以 xx 为核心的归档时,整棵树会被看作以 xx 为根的有根树。

你需要选择一个大小恰好为 kk 的观测站集合 SS,并且必须满足 xSx\in S。对于任意 iSi\in S,定义 f(i)f(i) 为从 ii 到根 xx 的路径上,所有属于 SS 的观测站的能量值之和。

这份归档的评分为:

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

对于每一个 1xn1\le x\le n,请你求出以 xx 为根时,所有合法集合 SS 中评分的最大值。

输入格式

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

第一行包含一个整数 TT,表示测试数据组数。

对于每组测试数据:

第一行包含两个整数 n,kn,k

第二行包含 nn 个整数 w1,w2,,wnw_1,w_2,\ldots,w_n

接下来 n1n-1 行,每行两个整数 u,vu,v,表示观测站 uuvv 之间有一条通道。

保证每组数据给出的图是一棵树。

输出格式

对于每组测试数据,输出一行 nn 个整数。第 xx 个整数表示以 xx 为根时的最大评分。

样例 1 输入

1
6 3
2 12 3 6 9 7
1 2
1 3
3 4
4 5
4 6

样例 1 输出

27 57 30 39 51 45

样例 2 输入

1
5 5
10000 1000 100 10 1
1 2
2 3
3 4
3 5

样例 2 输出

54311 15311 12511 12451 12415

样例 3

见选手目录下的 tree/tree3.intree/tree3.ans

该样例满足子任务 11 的约束条件。

样例 4

见选手目录下的 tree/tree4.intree/tree4.ans

该样例满足子任务 22 的约束条件。

样例 5

见选手目录下的 tree/tree5.intree/tree5.ans

该样例满足子任务 33 的约束条件。

样例 6

见选手目录下的 tree/tree6.intree/tree6.ans

该样例满足子任务 44 的约束条件。

样例 7

见选手目录下的 tree/tree7.intree/tree7.ans

该样例满足子任务 55 的约束条件。

数据范围

对于所有测试数据,均满足:

  • 1T5001\le T\le 500
  • 2n40002\le n\le 4000
  • 1kn1\le k\le n
  • 1wi1091\le w_i\le 10^9
  • 每个输入文件中所有测试数据的 nn 之和不超过 40004000
子任务编号 分值 约束条件
11 1010 n12n\le 12
22 2020 n300n\le 300
33 k50k\le 50
44 1010 给出的树是一条链
55 4040 无额外限制

本题采用捆绑测试。每个子任务内的测试点必须全部通过,才能获得该子任务分数。