동굴은 n개의 방과 이들을 잇는 n−1개의 복도로 이루어져 있다. 임의의 두 방 사이에는 동굴을 벗어나지 않고 오갈 수 있는 경로가 정확히 하나뿐이므로, 방과 복도는 트리를 이룬다.
일부 방에는 다이너마이트가 설치되어 있다. 모든 복도에는 도화선이 깔려 있으며, 각 방에서는 인접한 복도의 도화선들이 하나의 접점에서 만난다. 그 방에 다이너마이트가 있으면 접점은 그 다이너마이트와도 연결된다. 이웃한 두 방 사이의 도화선이 타는 데에는 정확히 1의 시간이 걸리며, 불이 어떤 방에 닿는 순간 그 방의 다이너마이트가 폭발한다.
시각 0에 m개의 방에서 (접점의) 도화선에 불을 붙일 수 있다. 모든 다이너마이트가 가능한 한 빨리 폭발하도록 이 m개의 방을 고르려고 한다. 불을 붙인 순간부터 마지막 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 구하여라.
첫째 줄에 두 정수 n과 m이 주어진다 (1≤m≤n≤300,000). n은 방의 개수, m은 불을 붙일 수 있는 방의 개수이다. 방에는 1부터 n까지 번호가 매겨져 있다.
둘째 줄에는 n개의 정수 d1,d2,…,dn이 주어진다 (각 di∈{0,1}). di=1이면 i번 방에 다이너마이트가 있고, di=0이면 없다.
이어지는 n−1개의 줄에는 각각 두 정수 a와 b가 주어진다 (1≤a<b≤n). 이는 a번 방과 b번 방을 잇는 복도가 있다는 뜻이다. 각 복도는 정확히 한 번씩만 주어진다.
도화선에 불을 붙인 순간부터 모든 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 정수 하나로 출력한다.
아래 그림의 예시에서는 3번 방과 5번 방의 도화선에 불을 붙인다.

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