포션 농사
시간 제한2초메모리 제한1024 MB
방 1에서 출발하는 최소 횟수의 경로로 모든 방을 방문할 때, 각 경로가 지나는 방에서 얻을 수 있는 포션의 최대 개수를 구합니다.
문제
당신은 좋아하는 모바일 게임을 하면서 전설의 소 보스를 물리칠 기회를 얻으려고 포션을 모으고 있다. 게임 맵은 부터 까지 번호가 붙은 방 개 로 이루어지며, 방들은 개의 간선으로 연결되어 트리를 이룬다.
맵은 "탐색"을 반복해서 살펴볼 수 있다. 탐색은 방 에서 트리 안의 다른 임의의 방까지 가는 단순 경로이다. 탐색 하나가 끝나면 방 에서 새 탐색을 시작할 수 있다. 모든 방이 적어도 한 번의 탐색에서 방문되면 맵 탐색이 끝난다. 주된 목표는 최소한의 탐색 횟수로 맵을 완성하는 것이다.
부차적인 목표는 포션을 최대한 많이 모으는 것이다. 탐색을 시작하기 전에 맵의 어떤 방에 포션이 나타난다. 현재 탐색 중에 그 방을 방문하면 포션을 주울 수 있다. 줍지 못한 포션은 현재 탐색이 끝나는 순간 사라지므로 이후 탐색에서는 주울 수 없다.
게임 파일을 분석해서 다음 번의 탐색 전에 포션이 어느 방에 나타나는지 알아냈다. 최소 탐색 횟수로 맵을 완성할 때, 맵에서 모을 수 있는 포션의 최대 개수는 얼마인가?
입력
첫 줄에 맵의 방 개수를 나타내는 정수 이 주어진다.
다음 줄에는 공백으로 구분된 정수 개 이 주어진다. 여기서 이며, 는 번째 탐색 전에 포션이 나타나는 방이다.
마지막으로 개의 줄에 각각 공백으로 구분된 정수 두 개 가 주어진다. 이는 방 와 방 를 잇는 간선이며, 이 간선들은 트리를 이룬다.
출력
최소 탐색 횟수로 맵을 완성했을 때 맵에서 모을 수 있는 포션의 최대 개수를 정수 하나로 한 줄에 출력한다.