대표적인 LCA(최소 공통 조상, Lowest Common Ancestor) 문제이다. 정점을 트리로 만들고 두 노드 사이의 거리를 구하는 건 간단하다. 한 정점에서 출발해서 트리를 타고 가장 단거리로 다른 노드에 도착하기만 하면 되는 문제이기 때문이다. 하지만 이 문제는 2초의 시간 제한이 있고, 1만 개의 질문이 주어지므로 한 질문 당 20000 번 이하의 연산을 해야 한다. (왜냐하면 1만 x 2만 = 2억이기 때문에 C++ 에서 러프하게 2초로 잡을 수 있다.) 노드가 최대 4만개이기 때문에, 재수 없게도 일자로 쭉 펼쳐진 ㅡㅡㅡㅡㅡㅡㅡ 이런 트리일 때 양 끝의 노드만 계속 묻는다면 반드시 시간 초과가 뜬다. 물론 이런 극한의 케이스가 아니어도 보통은 시간 초과가 뜬다. 평균적으로 떨어져있는 기대..