Nearby Cows

Фермер Джон заметил, что его коровы часто перемещаются между
соседними полями. Теперь он хочет посадить на каждом поле травы
столько, чтобы хватало не только корове, изначально расположенной 
на этом поле, но и для тех коров, которые приходят сюда с соседних 
полей.

Ферма Джона состоит из N полей (1 <= N <= 100,000), некоторые 
из которых соединены двунаправленными дорожками (N-1 всего).
Между любыми двумя полями I и j имеется уникальный путь по 
дорожкам. На поле I изначально пасется C(i) коров. Коровы могут
переходить на соседние поля, используя не более чем K  дорожек
(1 <= K <= 20).

Фермер Джон хочет посадить на каждом поле травы столько, чтобы 
прокормить максимальное количество коров M(i) – это максимальное 
количество коров, которые потенциально могут перейти на поле I,
используя не более чем K дорожек. По заданной структуре фермы 
и количеству коров C(i) на каждом поле I помогите ФД вычислить
M(i) для каждого поля.

PROBLEM NAME: nearcows

INPUT FORMAT:

* Строка 1: Два разделенных пробелом целых числа, N  K.

* Строки 2..N:Каждая строка содержит два разделенных пробелом 
              целых числа, I  j  (1 <= i,j <= N), указывающих, 
              что поля I и j связаны непосредственной дорожкой. 

* Строки N+1..2N: Строка N+i содержит целое число C(i). 
                                (0 <= C(i) <=1000)

SAMPLE INPUT (файл nearcows.in):

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

INPUT DETAILS:

Всего есть 6 полей, связанных дорожками (5,1), (3,6), (2,4), (2,1), (3,2).  
На поле I имеется C(i) = i коров.  

OUTPUT FORMAT:

* Строка 1..N: Строка i должна содержать целое значение M(i).

SAMPLE OUTPUT (файл nearcows.out):

15
21
16
10
8
11

OUTPUT DETAILS:

Для поля 1  M(1) = 15 коров на расстоянии не более чем 2 дорожки, и т.д.