아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

다이너마이트

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

요약
트리의 정확히 m개 지점에서 불을 붙여 모든 폭약이 최대한 빨리 터지도록 할 때, 마지막 폭약이 터지는 시간을 구한다.
난이도

어려움10점 중 8점

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

문제

동굴은 nn개의 방과 이들을 잇는 n−1n-1개의 복도로 이루어져 있다. 임의의 두 방 사이에는 동굴을 벗어나지 않고 오갈 수 있는 경로가 정확히 하나뿐이므로, 방과 복도는 트리를 이룬다.

일부 방에는 다이너마이트가 설치되어 있다. 모든 복도에는 도화선이 깔려 있으며, 각 방에서는 인접한 복도의 도화선들이 하나의 접점에서 만난다. 그 방에 다이너마이트가 있으면 접점은 그 다이너마이트와도 연결된다. 이웃한 두 방 사이의 도화선이 타는 데에는 정확히 11의 시간이 걸리며, 불이 어떤 방에 닿는 순간 그 방의 다이너마이트가 폭발한다.

시각 00에 mm개의 방에서 (접점의) 도화선에 불을 붙일 수 있다. 모든 다이너마이트가 가능한 한 빨리 폭발하도록 이 mm개의 방을 고르려고 한다. 불을 붙인 순간부터 마지막 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 구하여라.

입력

첫째 줄에 두 정수 nn과 mm이 주어진다 (1≤m≤n≤300,0001 \le m \le n \le 300{,}000). nn은 방의 개수, mm은 불을 붙일 수 있는 방의 개수이다. 방에는 11부터 nn까지 번호가 매겨져 있다.

둘째 줄에는 nn개의 정수 d1,d2,…,dnd_1, d_2, \dots, d_n이 주어진다 (각 di∈{0,1}d_i \in \{0, 1\}). di=1d_i = 1이면 ii번 방에 다이너마이트가 있고, di=0d_i = 0이면 없다.

이어지는 n−1n-1개의 줄에는 각각 두 정수 aa와 bb가 주어진다 (1≤a<b≤n1 \le a < b \le n). 이는 aa번 방과 bb번 방을 잇는 복도가 있다는 뜻이다. 각 복도는 정확히 한 번씩만 주어진다.

출력

도화선에 불을 붙인 순간부터 모든 다이너마이트가 폭발할 때까지 걸리는 최소 시간을 정수 하나로 출력한다.

힌트

아래 그림의 예시에서는 33번 방과 55번 방의 도화선에 불을 붙인다.

예시 트리

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

예제10

  1. 예제 1

    입력
    7 2
    1 0 1 1 0 1 1
    1 3
    2 3
    3 4
    4 5
    5 6
    5 7
    
    예상 출력
    1
    
  2. 예제 2

    입력
    1 1
    1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1 1
    0
    
    예상 출력
    0
    
  4. 예제 4

    입력
    4 1
    0 0 0 0
    1 2
    2 3
    3 4
    
    예상 출력
    0
    
  5. 예제 5

    입력
    5 1
    1 1 1 1 1
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    2
    
  6. 예제 6

    입력
    5 2
    1 1 1 1 1
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    1
    
  7. 예제 7

    입력
    6 1
    0 1 1 1 1 1
    1 2
    1 3
    1 4
    1 5
    1 6
    
    예상 출력
    1
    
  8. 예제 8

    입력
    4 4
    1 1 1 1
    1 2
    2 3
    3 4
    
    예상 출력
    0
    
  9. 예제 9

    입력
    6 6
    1 0 0 0 0 1
    1 2
    2 3
    3 4
    4 5
    5 6
    
    예상 출력
    0
    
  10. 예제 10

    입력
    9 2
    1 0 1 0 1 0 1 0 1
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
    7 8
    8 9
    
    예상 출력
    2