만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Top Cluster

시간 제한4초메모리 제한2048 MB

요약
가중치가 있는 트리에서 각 질의마다 정점 x로부터 거리 k 이하인 정점들의 값에 없는 가장 작은 음이 아닌 정수를 구합니다.
난이도

어려움10점 중 9점

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

문제

Top Cluster는 트리 위의 데이터를 관리하는 데 유용한 자료 구조이다. Top Cluster를 쓰면 구간 질의를 효율적으로 처리할 수 있다.

자료 구조 기술을 매우 좋아하는 EMmm은 지금 Top Cluster를 공부하고 있고, 어떤 자료 구조 문제를 풀려고 한다. EMmm과 함께 이 문제를 풀 프로그램을 작성해 보자.

이 문제에서는 정점이 nn개인 트리가 주어진다. 정점에는 1,2,…,n1, 2, \ldots, n의 번호가 붙어 있다. ii번 정점의 값은 음이 아닌 정수 wiw_i이다. 모든 값은 서로 다르다.

이어서 qq개의 질의가 주어진다. ii번째 질의에서는 두 정수 xix_i와 kik_i(1≤xi≤n1 \leq x_i \leq n, 0≤ki≤10150 \leq k_i \leq 10^{15})가 주어지고, mex({wu∣dist(u,xi)≤ki∧1≤u≤n})\mathrm{mex}\left(\{w_u \mid \mathrm{dist}(u, x_i) \leq k_i \land 1 \leq u \leq n\}\right)의 값을 구해야 한다.

여기서 dist(u,v)\mathrm{dist}(u, v)는 정점 uu에서 정점 vv까지 가는 최단 경로의 길이이다. 수학에서 집합의 mex(minimum excluded value)는 집합에 속하지 않는 가장 작은 음이 아닌 정수이다.

EMmm은 mex 문제를 잘 푼다. 모든 값이 서로 다를 때, 위 문제는 주어진 범위 밖에서 나타났거나 트리 전체에서 한 번도 나타나지 않은 가장 작은 음이 아닌 정수를 찾는 문제와 같다는 것을 알아냈다. 여기서 범위 밖이란 dist(xi,u)>ki\mathrm{dist}(x_i, u) > k_i인 경우를 말한다. 그녀는 여기서 더 나아가지 못한다. 그녀를 도와줄 수 있는가?

입력

첫째 줄에 정점의 개수 nn과 질의의 개수 qq가 주어진다(1≤n,q≤5⋅1051 \leq n, q \leq 5 \cdot 10^5).

둘째 줄에 정점의 값 w1,w2,…,wnw_1, w_2, \ldots, w_n이 주어진다(0≤wi≤1090 \leq w_i \leq 10^9). 모든 값은 서로 다르다.

다음 n−1n-1개의 줄에는 세 정수 uiu_i, viv_i, ℓi\ell_i가 주어진다. 이는 정점 uiu_i와 viv_i를 잇는 길이 ℓi\ell_i의 양방향 간선을 뜻한다(1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \neq v_i, 1≤ℓi≤1091 \leq \ell_i \leq 10^9). 입력은 트리이다.

다음 qq개의 줄에는 각 질의의 xix_i와 kik_i가 주어진다(1≤xi≤n1 \leq x_i \leq n, 0≤ki≤10150 \leq k_i \leq 10^{15}).

출력

각 질의에 대해 구한 mex 값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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