#2067. Nearby Cows

Nearby Cows

题目描述

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

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

FJ\red{FJ }想在每个田地 i\red{i }种足够的草来喂养可能最终在该田地中的最大数量的奶牛 M(i)\red{M(i) - }即最多跟随可能到达田地 i\red{i }的奶牛数量K\red{K }步道。给定 FJ\red{FJ }的农场结构和每个字段 i\red{i }C(i)\red{C(i) }值,请帮助 FJ\red{FJ }计算每个字段 i\red{i }M(i)\red{M(i)}

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

输入格式

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

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

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

输出格式

1..N\red{1..N }行:第 i\red{i }行应包含 M(i)\red{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\red{6 }个字段,路径连接 (5,1)\red{(5,1)}(3,6)\red{(3,6)}(2,4)\red{(2,4)}(2,1)\red{(2,1) }(3,2)\red{(3,2)}。字段 i\red{i }C(i)=i\red{C(i) = i }头奶牛。

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

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