트리 조각하기
시간 제한2초메모리 제한1024 MB
트리와 제거해야 할 정점 집합이 주어질 때, 표시된 정점만 폭탄으로부터 거리 p 미만에 오도록 폭탄을 배치하고 p의 최댓값을 구한다.
문제
타고난 트리 조각가 온조는 오늘도 완벽한 작품을 만들기 위해 트리 를 준비했다. 온조는 뛰어난 예술적 직관으로 조각할 작품을 머릿속에 그렸고, 먼저 조각상의 전체적인 틀을 잡기 위해 에서 제거할 정점들을 정했다.
그런데 의 정점들은 매우 단단해서 일반적인 도구로는 제거할 수 없고, 폭탄을 써야 한다. 그래서 온조는 의 몇몇 정점에 폭탄을 설치한 뒤 한 번에 폭발시키려고 한다. 모든 폭탄의 세기는 양의 정수 로 같으며, 모든 폭탄이 폭발한 뒤 폭탄이 설치된 정점과의 거리가 미만인 정점들은 제거된다. 이 과정에서 제거해야 할 정점이 제거되지 않거나 제거하지 않아야 할 정점이 제거되면 작품이 망가지므로, 온조는 그런 일이 일어나지 않도록 폭탄을 설치할 것이다.
온조는 폭발 과정도 작품의 한 부분이라고 생각하기 때문에 폭탄의 세기 가 클수록 작품의 예술적 가치가 높다고 여긴다. 트리 와 제거해야 할 정점들이 주어지면 폭탄의 세기 로 가능한 값 중 최댓값을 구해서 온조를 도와주자. 모든 정점을 제거해야 하는 경우나 모든 정점을 제거하지 않아야 하는 경우는 주어지지 않는다.
입력
첫째 줄에 트리 를 구성하는 정점의 개수 이 주어진다. ()
둘째 줄에 개의 수 가 공백을 사이에 두고 주어진다. 는 또는 이다. 인 경우 번 정점을 제거해야 한다는 의미이며, 인 경우 번 정점을 제거하지 않아야 한다는 의미이다.
셋째 줄부터 개 줄에 걸쳐 간선 정보가 주어지며, 각 줄에는 하나의 간선이 잇는 두 정점의 번호 , 가 공백을 사이에 두고 주어진다. (, , )
출력
첫째 줄에 폭탄의 세기 로 가능한 값 중 최댓값을 출력한다.