건물 폭파

시간 제한1초메모리 제한1024 MB

요약
트리에서 한 건물에 강도 x의 폭발을 일으키면 비용 x가 들고, 거리 d만큼 떨어진 건물은 x-d만큼 피해를 입는다; 모든 건물의 내구도를 0 이하로 만드는 최소 총 강도를 구한다.
난이도

어려움10점 중 8점

유형
트리, DFS, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

11번부터 NN번까지 번호가 매겨진 NN개의 건물이 N−1N-1개의 도로로 이어져 있는 트리 형태의 도시가 있다. ecode는 이 도시를 재건축하기 위해 모든 건물을 무너뜨리려고 한다.

ecode는 원하는 건물에 원하는 강도의 폭파 작업을 원하는 만큼 시행할 수 있다. 건물을 폭파하면 폭발은 도로를 통해 인접한 건물로 전달된다. 전달되는 폭발의 강도는 도로 하나를 통과할 때마다 11씩 감소하며, 전달되는 강도가 00이 되면 더 이상 전달되지 않는다. 건물의 내구도는 건물이 받은 폭발 강도만큼 감소하며, 내구도가 00 이하가 되면 건물은 무너진다.

예를 들어 ecode가 재건축하려는 도시가 아래와 같다고 하자.

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

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

따라서 1+6=71+6=7의 폭발 강도의 합으로 도시의 모든 건물을 무너뜨릴 수 있다.

ecode는 건물을 모두 무너뜨리는 데 필요한 모든 폭파 강도의 합을 최소화하려고 한다. 건물을 모두 무너뜨리기 위해 ecode가 일으켜야 할 폭파 강도의 합의 최솟값을 구하여라.

입력

첫 번째 줄에 정수 NN이 주어진다. (2≤N≤105)(2 \leq N \leq 10^5)

두 번째 줄부터 N−1N-1개의 줄에 걸쳐 도로로 연결된 두 건물의 번호 uu와 vv가 공백으로 구분하여 주어진다. (1≤u,v≤N;u≠v)(1 \leq u, v \leq N; u \ne v)

N+1N+1번째 줄에 각 건물의 내구도를 나타내는 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분하여 주어진다. (1≤A_1,A_2,⋯ ,A_N≤109)(1 \leq A\_1, A\_2, \cdots, A\_N \leq 10^9)

입력으로 주어진 그래프는 올바른 트리이다.

출력

모든 건물을 무너뜨리기 위해 ecode가 시행해야 할 폭파 강도의 합의 최솟값을 출력한다.

예제2

  1. 예제 1

    입력
    9
    1 3
    2 3
    3 4
    3 5
    5 6
    5 7
    7 8
    7 9
    5 2 6 3 4 2 5 1 3
    
    예상 출력
    7
    
  2. 예제 2

    입력
    9
    1 2
    2 3
    3 4
    3 5
    3 6
    6 7
    6 8
    7 9
    8 3 1 4 5 5 5 2 3
    
    예상 출력
    9