트리 읽기

NYPC 2024 · Round 2-A

NN 개의 정점으로 이루어진 트리가 있다. 이 트리의 각 정점에는 11 이상 99 이하인 숫자가 하나 쓰여 있다. 트리의 각 정점은 11번부터 NN번까지 번호가 매겨져 있다. 아래 그림이 위 조건을 만족하는 트리의 예이다. 각 정점 안에 있는 수는 정점의 번호, 정점 위의 숫자는 정점에 쓰인 숫자이다.

MM 명의 사람이 있다. 각 사람은 11번부터 MM번까지 번호가 매겨져 있다. 각 사람들은 트리에서 출발 정점과 도착 정점을 선택한다. 출발 정점에서 도착 정점을 잇는 경로에 있는 정점들에 쓰인 숫자를 차례대로 읽으면 수를 만들 수 있다. 예를 들어, 11번 정점에서 출발하여 33번 정점으로 도착하는 경로는 차례대로 11번 정점, 22번 정점, 33번 정점을 방문하게 되고, 22, 11, 22를 차례로 읽어 212212가 만들어진다.

MM 명의 사람들이 만드는 MM 개의 수를 오름차순으로 정렬하여, 사람들에게 등수를 매기려고 한다. 만약 만든 수가 동일한 경우, 번호가 낮은 사람이 앞에 온다.

트리의 정보, 각 사람이 선택한 출발 정점과 도착 정점이 주어졌을 때, 사람의 번호를 등수 순서대로 출력하는 프로그램을 작성하라.

입력 형식

첫 줄에 정점의 수를 나타내는 정수 NN과 사람의 수를 나타내는 정수 MM이 공백으로 구분되어 주어진다. (2N150000;2 \le N \le 150\,000; 2M1500002 \le M \le 150\,000)

그다음 줄에 NN 개의 숫자 D1,D2,DND_1, D_2, \cdots D_N가 공백으로 구분되어 주어진다. 이는 ii번 정점에 적혀있는 숫자가 DiD_i임을 의미한다. (1Di91 \le D_i \le 9)

이어지는 N1N-1 개의 줄의 ii 번째 줄에는 ii 번째 간선의 정보를 나타내는 두 정수 UiU_iViV_i가 공백으로 구분되어 주어진다. 이는 UiU_i번 정점과 ViV_i번 정점을 잇는 간선을 의미한다. (1Ui,ViN1 \le U_i, V_i \le N)

이어지는 MM 개의 줄의 ii 번째 줄에는 ii번 사람이 선택한 출발 정점의 번호 SiS_i와 도착 정점의 번호 EiE_i가 공백으로 구분되어 주어진다. (1Si,EiN;1 \le S_i, E_i \le N; SiEiS_i \ne E_i)

출력 형식

MM 개의 줄에 걸쳐 답을 출력한다. ii 번째 줄에 ii 번째 순위를 기록한 사람의 번호를 출력한다.

예제 1

입력

6 6 2 1 2 3 1 2 1 2 2 3 2 4 4 5 4 6 1 3 3 1 1 6 5 1 2 4 4 5

출력

5 6 1 2 4 3

예제 2

입력

5 3 1 5 7 3 2 1 2 2 3 3 4 4 5 1 5 3 5 2 4

출력

3 2 1

예제 설명

입력 예제 1에서, 각 사람이 만든 수는 212212, 212212, 21322132, 13121312, 1313, 3131이며, 각 사람들의 등수는 차례로 33, 44, 66, 55, 11, 22이 된다. 1등은 55번, 2등은 66번, 3등은 11번, 4등은 22번, 5등은 44번, 6등은 33번이 되므로 출력 결과는 55 66 11 22 44 33이 된다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 4

N18;M5000N \leq 18; M \leq 5\,000

종류 2: 11

N,M5000N, M \leq 5\,000

종류 3: 14

가능한 모든 ii에 대해 Ui=i+12;Vi=i+1U_i = \lfloor \frac{i+1}{2} \rfloor; V_i = i+1

종류 4: 21

가능한 모든 ii에 대해 Ui=i;Vi=i+1U_i = i; V_i = i+1

종류 5: 17

N,M80000N, M \leq 80\,000

종류 6: 33

추가적인 제한 조건이 없음.

해설