만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

포션 농사

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

요약
방 1에서 출발하는 최소 횟수의 경로로 모든 방을 방문할 때, 각 경로가 지나는 방에서 얻을 수 있는 포션의 최대 개수를 구합니다.
난이도

보통10점 중 7점

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

문제

당신은 좋아하는 모바일 게임을 하면서 전설의 소 보스를 물리칠 기회를 얻으려고 포션을 모으고 있다. 게임 맵은 11부터 NN까지 번호가 붙은 방 NN개 (2≤N≤105)(2 \leq N \leq 10^5)로 이루어지며, 방들은 N−1N-1개의 간선으로 연결되어 트리를 이룬다.

맵은 "탐색"을 반복해서 살펴볼 수 있다. 탐색은 방 11에서 트리 안의 다른 임의의 방까지 가는 단순 경로이다. 탐색 하나가 끝나면 방 11에서 새 탐색을 시작할 수 있다. 모든 방이 적어도 한 번의 탐색에서 방문되면 맵 탐색이 끝난다. 주된 목표는 최소한의 탐색 횟수로 맵을 완성하는 것이다.

부차적인 목표는 포션을 최대한 많이 모으는 것이다. 탐색을 시작하기 전에 맵의 어떤 방에 포션이 나타난다. 현재 탐색 중에 그 방을 방문하면 포션을 주울 수 있다. 줍지 못한 포션은 현재 탐색이 끝나는 순간 사라지므로 이후 탐색에서는 주울 수 없다.

게임 파일을 분석해서 다음 NN번의 탐색 전에 포션이 어느 방에 나타나는지 알아냈다. 최소 탐색 횟수로 맵을 완성할 때, 맵에서 모을 수 있는 포션의 최대 개수는 얼마인가?

입력

첫 줄에 맵의 방 개수를 나타내는 정수 NN이 주어진다.

다음 줄에는 공백으로 구분된 정수 NN개 p1 p2 … pNp_1 \: p_2 \: \ldots \: p_N이 주어진다. 여기서 1≤pi≤N1 \leq p_i \leq N이며, pip_i는 ii번째 탐색 전에 포션이 나타나는 방이다.

마지막으로 N−1N-1개의 줄에 각각 공백으로 구분된 정수 두 개 a ba \: b (1≤a,b≤N)(1 \leq a, b \leq N)가 주어진다. 이는 방 aa와 방 bb를 잇는 간선이며, 이 간선들은 트리를 이룬다.

출력

최소 탐색 횟수로 맵을 완성했을 때 맵에서 모을 수 있는 포션의 최대 개수를 정수 하나로 한 줄에 출력한다.

예제1

  1. 예제 1

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