도시 관광

가중치가 있는 트리에서 현재 도시 x에서 a_y - dist(x, y)를 최대화하는 도시 y로 매일 이동하며, 동점이면 번호가 가장 작은 도시를 택할 때 K일 후 위치를 구한다.

어려움8트리DFS이분 탐색분할 정복아직 제출이 없습니다시간 제한2초메모리 제한64 MB

문제

몰도바에는 도시가 NN개 있고 1번부터 NN번까지 번호가 붙어 있다. 도시 사이는 양방향 도로로 이어져 있는데, 정부는 예산을 아끼려고 도로를 정확히 N1N - 1개만 놓았다. 그래도 어느 두 도시 사이든 도로를 따라 오갈 수 있다.

법령에 따라 모든 도시에는 음이 아닌 정수인 아름다움 값이 하나씩 정해져 있다. ii번 도시의 아름다움은 aia_i이다. 서로 다른 두 도시의 아름다움이 같을 수도 있다.

여행자 기젤은 지금 1번 도시에 있다. 아름다운 도시를 많이 보고 싶지만 시간이 모자라고 결정을 잘 내리지 못한다. 몰도바에 KK일 더 머무르며 하루에 도시를 하나씩 방문한다. ii일째에는 전날 도착한 도시 xx에서 출발하고(첫날이면 x=1x = 1이다), ayd(x,y)a_y - d(x, y)가 최대인 도시 yy(yxy \ne x)를 찾는다. 여기서 d(x,y)d(x, y)xx에서 출발해 yy에 도착할 때까지 지나야 하는 도로의 최소 개수이다. 최댓값을 만드는 도시가 여럿이면 번호가 가장 작은 도시를 고른다. 기젤은 yy로 이동해 그날 남은 시간을 그곳에서 보내고, 다음 날 같은 규칙을 다시 적용한다.

KK일째가 끝났을 때 기젤이 어느 도시에 있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 수 NN과 기젤이 머무르는 날수 KK가 주어진다. 둘째 줄에 NN개의 정수 a1,a2,,aNa_1, a_2, \dots, a_N이 주어지며, aia_iii번 도시의 아름다움이다. 다음 N1N - 1개 줄에는 두 정수 uiu_iviv_i가 주어지고, uiu_i번 도시와 viv_i번 도시를 잇는 양방향 도로가 있다는 뜻이다.

출력

KK일째가 끝났을 때 기젤이 있는 도시의 번호를 한 줄에 출력한다.

제한

  • 2N3×1052 \le N \le 3 \times 10^5
  • 1K10181 \le K \le 10^{18}
  • 0ai1090 \le a_i \le 10^9
  • 1ui,viN1 \le u_i, v_i \le N
  • uiviu_i \ne v_i
  • 도로 N1N - 1개는 모든 도시를 연결한다.

힌트

첫 번째 예제에서 기젤은 1일째에 1번 도시를 떠나 3번 도시로 가고, 2일째에 3번 도시에서 5번 도시로, 3일째에 5번 도시에서 2번 도시로 이동한다. 마지막 날인 4일째에는 2번 도시를 떠나 다시 5번 도시로 간다.