반짝임이 있는 곳
시간 제한2초메모리 제한1024 MB
트리와 목표 수열이 주어질 때, 서로 겹치지 않거나 포함 관계인 서브트리 덧셈 연산의 최소 횟수를 구한다.
문제
나나는 정점이 개인 트리 를 가지고 있으며, 트리의 각 정점에는 수가 하나씩 적혀있다. 초기에 각 정점에 적혀있는 수는 전부 이다.
나나는 다음과 같은 연산을 번 이상 할 수 있다.
- 이하의 양의 정수 와 트리 의 서브트리 를 원하는 대로 선택한 뒤, 에 포함된 모든 정점에 적힌 수에 를 더한다.
- 이때 번째 연산에서 사용되는 서브트리의 정점의 집합을 라 할 때, 인 두 에 대해 와 의 교집합이 공집합이거나 또는 둘 중 하나와 같아야 한다.
나나는 목표 수열 가 주어졌을 때, 번째 정점에 적힌 수가 정확히 가 되도록 만들고 싶다. 이때 필요한 연산의 최소 횟수를 구하자.
트리와 서브트리가 무엇인지 잘 모르는 친구들은 친절한 준호가 준비한 아래의 정의를 읽어보도록 하자.
- 정점들의 집합 와 간선들의 집합 으로 구성된 그래프 가 트리라 함은 의 임의의 두 정점 와 사이에 항상 경로가 존재하고 그 경로가 유일함을 의미한다.
- 트리 의 서브트리 란, 이고 위의 트리의 성질을 만족하는 그 자체로 트리인 그래프이다.
입력
첫째 줄에 정점의 개수 이 주어진다.
둘째 줄에 목표 수열을 의미하는 개의 정수 이 공백으로 구분되어 주어진다.
셋째 줄부터 개의 줄에 걸쳐, 트리의 간선을 의미하는 두 정수 가 한 줄에 하나씩 공백으로 구분되어 주어진다. 이는 번 정점과 번 정점을 연결하는 간선을 의미한다.
출력
번째 정점에 적힌 수를 로 만들기 위해 필요한 연산의 최소 횟수를 출력한다.
제한
- 주어지는 모든 수는 정수이다.
- ()
- 입력으로 주어지는 그래프는 트리이다.