#P5541. Nearby Cows

Nearby Cows

题目描述

农夫约翰注意到他的奶牛经常在附近的田地之间移动。考虑到这一点,他想在他的每个田地里种植足够的草,不仅是为了最初位于该田地的奶牛,而且也为了从附近田地来的奶牛。

具体来说,FJ{FJ }的农场由 N{N }个田地组成(1<=N<=100,000{1 <= N <= 100,000)},其中一些田地对通过双向路径连接(总共 N1{N-1 }个)。FJ{FJ }设计了农场,以便在任何两个田地 i{i }j{j }之间,有一条由连接 i{i }j{j }之间的路径。田地 i{i }Ci{C_i }头奶牛的家,尽管奶牛有时会通过 K{K }条路径 (1<=K<=20){(1 <= K <= 20) }移动到不同的田地。

FJ{FJ }想在每个田地 i{i },种足够的草来喂养可能最终在该田地中的最大数量的奶牛 Mi{M_i - }即通过最多K{K }步可能到达田地 i{i }的奶牛数量。给定 FJ{FJ }的农场结构和每个农场 i{i }Ci{C_i }值,请帮助 FJ{FJ }计算每个农场 i{i }Mi{M_i}

给你一棵 n{n }个点的树,点带权,对于每个节点求出距离它不超过 k{k }的所有节点权值和 Mi{M_i}

输入格式

1{1 }行:两个以空格分隔的整数 N{N }K{K}

2..N{2..N }行:每行包含两个以空格分隔的整数 i{i }j(1<=i,j<=N){j (1 <= i,j <= N),}表示字段 i{i }j{j }由一条路径直接连接。

N+1..2N{N+1..2N }行:第 N+i{N+i }行包含整数 Ci{C_i}(0<=Ci<=1000){(0 <= C_i <= 1000)}

输出格式

1..N{1..N }行:第 i{i }行应包含 Mi{M_i }的值。

样例

输入样例

6 2 
5 1 
3 6 
2 4 
2 1 
3 2 
1 
2 
3 
4 
5 
6

输出样例

15 
21 
16 
10 
8 
11

提示

6{6 }个字段,路径连接 (5,1){(5,1)}(3,6){(3,6)}(2,4){(2,4)}(2,1){(2,1) }(3,2){(3,2)}。字段 i{i }C(i)=i{C(i) = i }头奶牛。

字段 1{1 }2{2 }条小径的距离内有 M(1)=15{M(1) = 15 }头奶牛,依此类推。

对于 100%{100\%}的数据:1n105{1 \le n \le 10^5}1k20{1 \le k \le 20,}0ci1000{0 \le c_i \le 1000}