건물 폭파
시간 제한1초메모리 제한1024 MB
트리에서 한 건물에 강도 x의 폭발을 일으키면 비용 x가 들고, 거리 d만큼 떨어진 건물은 x-d만큼 피해를 입는다; 모든 건물의 내구도를 0 이하로 만드는 최소 총 강도를 구한다.
문제
번부터 번까지 번호가 매겨진 개의 건물이 개의 도로로 이어져 있는 트리 형태의 도시가 있다. ecode는 이 도시를 재건축하기 위해 모든 건물을 무너뜨리려고 한다.
ecode는 원하는 건물에 원하는 강도의 폭파 작업을 원하는 만큼 시행할 수 있다. 건물을 폭파하면 폭발은 도로를 통해 인접한 건물로 전달된다. 전달되는 폭발의 강도는 도로 하나를 통과할 때마다 씩 감소하며, 전달되는 강도가 이 되면 더 이상 전달되지 않는다. 건물의 내구도는 건물이 받은 폭발 강도만큼 감소하며, 내구도가 이하가 되면 건물은 무너진다.
예를 들어 ecode가 재건축하려는 도시가 아래와 같다고 하자.

번 건물에 강도 의 폭발을 일으키면 아래와 같이 번 건물의 내구도가 감소한다.

이어서 번 건물에 강도 의 폭발을 일으키면 아래와 같이 번 건물의 내구도가 감소한다. 폭발이 주변으로 전달되면서 주변 건물들의 내구도 또한 전달된 폭발의 강도만큼 감소한다. 모든 건물의 내구도가 이하가 되었으므로 모든 건물이 무너졌다.

따라서 의 폭발 강도의 합으로 도시의 모든 건물을 무너뜨릴 수 있다.
ecode는 건물을 모두 무너뜨리는 데 필요한 모든 폭파 강도의 합을 최소화하려고 한다. 건물을 모두 무너뜨리기 위해 ecode가 일으켜야 할 폭파 강도의 합의 최솟값을 구하여라.
입력
첫 번째 줄에 정수 이 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 도로로 연결된 두 건물의 번호 와 가 공백으로 구분하여 주어진다.
번째 줄에 각 건물의 내구도를 나타내는 개의 정수 이 공백으로 구분하여 주어진다.
입력으로 주어진 그래프는 올바른 트리이다.
출력
모든 건물을 무너뜨리기 위해 ecode가 시행해야 할 폭파 강도의 합의 최솟값을 출력한다.