#B8199. 小松鼠的聚会

小松鼠的聚会

题目描述

在一片树林中,有 nn 个树洞,按顺序从 11nn 编号,每个树洞里住着至少一只松鼠。一条藤蔓连接两个树洞,共有 n1n -1 条藤蔓,使得任意两个树洞可以直接或间接到达。这些小松鼠经常举办聚会,当某个树洞中的小松鼠举办聚会时,它们也会邀请距离自家树洞不超过k 条藤蔓范围的邻居们前来参加聚会请计算出每个树洞分别在举办聚会时,最多有多少只小松鼠参加聚会,并按照树洞编号从 11nn 依次输出结果。

例如:n=4n = 4,表示有 44 个树洞,1144 号树洞中居住的小松鼠的数量分别为: 53615、3、6、1;共有 33 条藤蔓,每条藤蔓连接两个树洞,分别为:112211332244; k=2k = 2,表示当某个树洞中的小松鼠举办聚会时,它们会邀请距离自家树洞不超过 22 条藤蔓范围的邻居们前来参加聚会;

image

根据上图得知: 当 11 号树洞的小松鼠举办聚会时,12341、2、3、4 号树洞中的小松鼠可以参加,最多会有 15(5+3+6+1)15(5 +3 + 6+1) 只小松鼠参加; 当 22 号树洞的小松鼠举办聚会时,12341、2、3、4 号树洞中的小松鼠可以参加,最多会有 15(5+3+6+1)15(5 +3 + 6+1) 只小松鼠参加; 当 33 号树洞的小松鼠举办聚会时,1231、2、3 号树洞中的小松鼠可以参加,最多会有 14(5+3+6)14(5 +3+ 6) 只小松鼠参加; 当 44 号树洞的小松鼠举办聚会时,1241、2、4 号树洞中的小松鼠可以参加,最多会有 9(5+3+1)9(5+3+ 1) 只小松鼠参加;

故答案为: 15 15 14 9

输入格式

第一行输入一个整数 n(1n<100000)n(1≤n \lt 100000),表示树洞的数量。 接下来 nn 行,每行输入一个整数 ci(0ci1000)c_i(0\le c_i \le 1000),表示每个树洞中居住的小松鼠的数量 接下来 n1n - 1 行,每行输入两个整数 ai,bi(1ai,bin)a_i,b_i(1\le a_i,b_i\le n),表示藤蔓连接两个树洞的编号,整数之间以一个空格隔开 最后一行输入一个整数 k(1k20)k(1≤k≤20),表示邀请邻居的距离限制。

输出格式

nn 行,每行输出一个整数,表示每个树洞中的小松鼠在举办聚会时,参加聚会的小松鼠的最大数量,按照树洞编号从 11nn 依次输出结果。

4
5
3
6
1
1 2
1 3
2 4
2
15
15
14
9