#P3589. 第3题-祖先节点

第3题-祖先节点

题目内容

给定一棵树,根节点为 11 ,其中第 uu 个节点有点权 aua_u ,定义 f(k)f(k) 为:

选择树上 kk 个互不相同的节点。你需要保证这 kk 个节点两两不成祖先-子孙关系。f(k)f(k) 为在所有可能的选择方案里最大的点权和。如果不存在任何一种合法的选择方案,则 f(k)=1f(k)=-1

计算 f(1),f(2),,f(n)f(1),f(2),…,f(n)

【名词解释】

祖先节点:在一棵以 uu 为根的树中,若点 xxuuvv 的简单路径上,且 xvx≠v 则称 xxvv 的祖先节点。根节点没有祖先节点。

输入描述

每个测试文件均包含多组测试数据,第一行输入一个整数 T(1T1000)T(1≦T≦1000) 代表数据组数,每组测试数据描述如下:

第一行输入一个正整数 n(1n5000)n(1≦n≦5000),代表树中的节点数量。

第二行输入 nn 个正整数 a1,a2,...,an(1ai109)a_1,a_2,...,a_n(1≦a_i≦10^9) 表示每个节点的点权。

接下来 n1n-1 行,第 ii 行插人两个正整数 ui,vi(1ui,vin)u_i,v_i(1≦u_i,v_i≦n) ,表示树上一条从节点 uiu_iviv_i 的边。输入保证是一棵合法的树。

除此之外,保证单个测试文件的 nn 之和不超过 50005000

输出描述

输出一行 nn 个整数,其中第 ii 个整数代表 f(i)f(i)

样例1

输入

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

输出

114514
5 6 9 -1