다이너마이트
시간 제한2초메모리 제한128 MB
트리의 정확히 m개 지점에서 불을 붙여 모든 폭약이 최대한 빨리 터지도록 할 때, 마지막 폭약이 터지는 시간을 구한다.
문제
동굴은 개의 방과 이들을 잇는 개의 복도로 이루어져 있다. 임의의 두 방 사이에는 동굴을 벗어나지 않고 오갈 수 있는 경로가 정확히 하나뿐이므로, 방과 복도는 트리를 이룬다.
일부 방에는 다이너마이트가 설치되어 있다. 모든 복도에는 도화선이 깔려 있으며, 각 방에서는 인접한 복도의 도화선들이 하나의 접점에서 만난다. 그 방에 다이너마이트가 있으면 접점은 그 다이너마이트와도 연결된다. 이웃한 두 방 사이의 도화선이 타는 데에는 정확히 의 시간이 걸리며, 불이 어떤 방에 닿는 순간 그 방의 다이너마이트가 폭발한다.
시각 에 개의 방에서 (접점의) 도화선에 불을 붙일 수 있다. 모든 다이너마이트가 가능한 한 빨리 폭발하도록 이 개의 방을 고르려고 한다. 불을 붙인 순간부터 마지막 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 구하여라.
입력
첫째 줄에 두 정수 과 이 주어진다 (). 은 방의 개수, 은 불을 붙일 수 있는 방의 개수이다. 방에는 부터 까지 번호가 매겨져 있다.
둘째 줄에는 개의 정수 이 주어진다 (각 ). 이면 번 방에 다이너마이트가 있고, 이면 없다.
이어지는 개의 줄에는 각각 두 정수 와 가 주어진다 (). 이는 번 방과 번 방을 잇는 복도가 있다는 뜻이다. 각 복도는 정확히 한 번씩만 주어진다.
출력
도화선에 불을 붙인 순간부터 모든 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 정수 하나로 출력한다.
힌트
아래 그림의 예시에서는 번 방과 번 방의 도화선에 불을 붙인다.

번 방의 다이너마이트는 시각 에 폭발하고, , , , 번 방의 다이너마이트는 의 시간이 지난 뒤 폭발한다. 따라서 마지막 폭발은 시각 에 일어난다.