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

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

과일 나무

시간 제한3초메모리 제한1024 MB

요약
각 정점에 과일 종류가 있는 트리에서 두 정점 사이 경로 위에 과반수를 차지하는 종류가 있는지, 있다면 무엇인지 답하는 질의를 처리한다.
난이도

어려움10점 중 9점

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

문제

서울과학고등학교 뒷마당에는 NN개의 정점으로 이루어진 마법의 나무가 있고, 각 정점에는 과일이 하나씩 달려 있다. (나무는 N−1N-1개의 간선으로 이루어진 연결 무향 그래프이다.)

나무에서 과일을 따는 것은 금지되어 있지만, 학생들은 몰래 과일을 따 먹고 싶어 한다. 선생님에게 들키지 않으려고 학생들은 다음과 같은 방법으로 딸 과일을 고른다.

  • 나무에서 두 정점 s,es, e를 고르고, ss에서 ee로 가는 유일한 경로에 있는 모든 과일을 생각한다. 정점 s,es, e에 있는 과일도 포함한다.
  • 경로에 있는 과일 중에서 개수가 과반수를 차지하는 종류가 있으면, 학생은 그 과일을 골라 먹는다. 어떤 종류의 과일이 과반수를 차지한다는 것은, 경로에서 그 과일의 개수가 전체 과일 개수의 절반보다 엄격하게 큰 경우를 말한다.

물론 학생들은 착한 학생이라 실제로 과일을 따지는 않는다. 그냥 생각만 한다. :)

착한 학생답게, 학생들은 이 생각 실험을 쿼리 문제로 확장했다. QQ개의 독립적인 쿼리가 주어질 때, 각 쿼리에 대해 답을 구하거나 과반수를 차지하는 과일이 없다고 판단해야 한다. 이 문제를 풀 수 있겠는가?

입력

첫째 줄에 두 정수 N,QN, Q가 주어진다. (1≤N,Q≤2500001 \le N, Q \le 250 000)

다음 줄에 NN개의 정수 c_ic\_i가 주어지며, 정점 ii에 있는 과일의 종류를 나타낸다. (1≤c_i≤N1 \le c\_i \le N)

다음 N−1N-1개의 줄에 각 간선의 두 끝점 a_i,b_ia\_i, b\_i가 주어진다. (1≤a_i,b_i≤N,a_i≠b_i1 \le a\_i, b\_i \le N, a\_i \neq b\_i)

다음 QQ개의 줄에 각 경로의 두 끝점 s_i,e_is\_i, e\_i가 주어진다. (1≤s_i,e_i≤N1 \le s\_i, e\_i \le N)

출력

QQ개의 줄을 출력한다. 각 줄에는 주어진 경로에서 과반수를 차지하는 과일의 종류를 하나의 정수로 출력한다. 주어진 경로에 과반수를 차지하는 과일이 없으면 −1-1을 출력한다.

예제1

  1. 예제 1

    입력
    7 4
    3 1 1 2 1 1 2
    1 3
    7 5
    2 3
    5 3
    5 6
    4 5
    1 4
    7 2
    3 3
    4 7
    
    예상 출력
    -1
    1
    1
    2