编程题
### 问题描述
小齐有一片农田,有 $N$ 个领域,每两个领域之间通过双向小径相连。小齐的奶牛在各个领域中游荡,有时候从一个领域走到另一个领域,最多经过 $K$ 条小径($1 \leq K \leq 20$)。
每个领域 $i$ 里有 $C(i)$ 头奶牛($0 \leq C(i) \leq 1000$)。小齐想要为每个领域种植足够的草,以满足可能到达该领域的奶牛数量 $M(i)$,即通过最多 $K$ 条小径到达的奶牛数量。请帮助小齐计算每个领域 $i$ 的 $M(i)$。
### 输入格式
第一行包含两个用空格分隔的整数 $N$ 和 $K$。
接下来 $N-1$ 行,每行包含两个整数 $i$ 和 $j$,表示领域 $i$ 和 $j$ 之间有一条小径。
接下来的 $N$ 行,每行包含一个整数 $C(i)$,表示领域 $i$ 中的奶牛数量。
### 输出格式
输出 $N$ 行,每行包含一个整数,表示对应领域的 $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
```
### 评测数据规模
$1 \leq N \leq 100,000$。