반짝임이 있는 곳

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

요약
트리와 목표 수열이 주어질 때, 서로 겹치지 않거나 포함 관계인 서브트리 덧셈 연산의 최소 횟수를 구한다.
난이도

어려움10점 중 8점

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

문제

나나는 정점이 NN개인 트리 TT를 가지고 있으며, 트리의 각 정점에는 수가 하나씩 적혀있다. 초기에 각 정점에 적혀있는 수는 전부 00이다.

나나는 다음과 같은 연산을 00번 이상 할 수 있다.

  • 10910^9 이하의 양의 정수 xx와 트리 TT의 서브트리 T′T'를 원하는 대로 선택한 뒤, T′T'에 포함된 모든 정점에 적힌 수에 xx를 더한다.
  • 이때 ii번째 연산에서 사용되는 서브트리의 정점의 집합을 T′_iT'\_i라 할 때, i≠ji \neq j인 두 i,ji, j에 대해 T′_iT'\_i와 T′_jT'\_j의 교집합이 공집합이거나 T′_iT'\_i 또는 T′_jT'\_j 둘 중 하나와 같아야 한다.

나나는 목표 수열 BB가 주어졌을 때, ii번째 정점에 적힌 수가 정확히 B_iB\_i가 되도록 만들고 싶다. 이때 필요한 연산의 최소 횟수를 구하자.

트리와 서브트리가 무엇인지 잘 모르는 친구들은 친절한 준호가 준비한 아래의 정의를 읽어보도록 하자.

  • 정점들의 집합 VV와 간선들의 집합 EE으로 구성된 그래프 G=(V,E)G=(V,E)가 트리라 함은 GG의 임의의 두 정점 uu와 vv사이에 항상 경로가 존재하고 그 경로가 유일함을 의미한다.
  • 트리 T=(V,E)T=(V,E)의 서브트리 T′=(V′,E′)T'=(V',E')란, V′⊆V,E′⊆EV'\subseteq V,E'\subseteq E이고 위의 트리의 성질을 만족하는 그 자체로 트리인 그래프이다.

입력

첫째 줄에 정점의 개수 NN이 주어진다.

둘째 줄에 목표 수열을 의미하는 NN개의 정수 B_1,B_2,⋯ ,B_NB\_1,B\_2,\cdots ,B\_N이 공백으로 구분되어 주어진다.

셋째 줄부터 N−1N-1개의 줄에 걸쳐, 트리의 간선을 의미하는 두 정수 u,vu,v가 한 줄에 하나씩 공백으로 구분되어 주어진다. 이는 uu번 정점과 vv번 정점을 연결하는 간선을 의미한다.

출력

ii번째 정점에 적힌 수를 B_iB\_i로 만들기 위해 필요한 연산의 최소 횟수를 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤200,0001\leq N\leq 200\\, 000
  • 1≤B_i≤1091\leq B\_i\leq 10^9 (1≤i≤N1\le i\le N)
  • 1≤u,v≤N1\le u,v\le N
  • 입력으로 주어지는 그래프는 트리이다.

예제1

  1. 예제 1

    입력
    4
    1 3 8 3
    2 4
    2 3
    2 1
    
    예상 출력
    3