아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

최소 트리 분할

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

요약
트리와 각 정점의 목표 가중치가 주어질 때, 연결된 부분 그래프의 모든 정점에 1을 더하는 연산의 최소 횟수를 구한다.
난이도

보통10점 중 7점

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

문제

정점이 NN개인 트리가 주어진다. 정점에는 11부터 NN까지 번호가 붙어있다. 각 정점에는 가중치가 존재하는데, 초기에 모든 가중치는 00이다.

당신은 다음 연산을 트리에 반복하여 11 이상 NN 이하의 모든 ii에 대해 정점 ii의 가중치가 A_iA\_i가 되도록 만들고 싶다.

  • 연산: 주어진 트리의 임의의 부분 연결 그래프에 대하여, 그 그래프에 포함되는 정점의 가중치를 11씩 증가시킨다.

11 이상 NN 이하의 모든 ii에 대해 정점 ii의 가중치가 A_iA\_i가 되도록 하는 최소 연산 횟수를 구하라.

입력

첫 번째 줄에 정점의 개수를 나타내는 NN이 주어진다. (2≤N≤100,0002 \leq N \leq 100\\,000)

두 번째 줄에 목표 가중치 A_1,A_2,…,A_NA\_1, A\_2, \dots, A\_N이 공백에 구분되어 주어진다. (0≤A_i≤1090 \leq A\_i \leq 10^9)

세 번째 줄부터 (N−1)(N - 1)개의 줄에 걸쳐 간선의 정보 u_iu\_i v_iv\_i가 주어지며, 이는 u_iu\_i번 정점과 v_iv\_i번 정점 사이에 간선이 있다는 뜻이다. (1≤u_i,v_i≤N1 \leq u\_i, v\_i \leq N)

출력

최소 연산 횟수를 출력하라.

예제1

  1. 예제 1

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