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

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

가장 가까운 공통 조상

면접 대비

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

요약
루트가 있는 트리에서 두 정점의 공통 조상 중 가장 깊은 정점 번호를 각 질의마다 구합니다.
난이도

보통10점 중 4점

유형
트리, DFS
정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리가 주어진다. 각 정점에는 1번부터 NN번까지 번호가 붙어 있고, 루트는 1번이다.

두 정점 uu와 vv의 가장 가까운 공통 조상은 uu의 조상이면서 동시에 vv의 조상인 정점 가운데 루트에서 가장 멀리 떨어진 정점이다. 여기서는 정점 자신도 자기 자신의 조상으로 본다.

정점 쌍 MM개가 주어진다. 각 쌍마다 가장 가까운 공통 조상이 몇 번인지 구한다.

입력

첫째 줄에 정점의 개수 NN이 주어진다 (2≤N≤500002 \le N \le 50000).

다음 N−1N-1개 줄에는 트리에서 간선으로 이어진 두 정점의 번호가 주어진다. 간선은 부모, 자식 순서로 주어진다는 보장이 없다.

그 다음 줄에 질의의 개수 MM이 주어진다 (1≤M≤100001 \le M \le 10000). 이어지는 MM개 줄에는 정점 쌍이 한 줄에 하나씩 주어진다. 한 쌍의 두 정점은 같을 수도 있다.

출력

MM개의 줄을 출력한다. ii번째 줄에는 입력에서 ii번째로 주어진 쌍의 가장 가까운 공통 조상 번호를 출력한다.

예제1

  1. 예제 1

    입력
    15
    1 2
    1 3
    2 4
    3 7
    6 2
    3 8
    4 9
    2 5
    5 11
    7 13
    10 4
    11 15
    12 5
    14 7
    6
    6 11
    10 9
    2 6
    7 6
    8 13
    8 15
    
    예상 출력
    2
    4
    2
    1
    3
    1