(정올) 트리 구성 –

먼저 하나의 노드 0으로만 구성된 트리가 있습니다.

트리의 노드를 추가, 삭제 또는 이동하여 트리를 재구성합니다.

(트리의 루트는 항상 0이 보장됨)

(1) 루트 노드까지의 거리와 (2) 노드 x의 다음 노드까지의 거리를 확인할 수 있어야 합니다.

아래 주어진 명령 형식에 따라 프로그램을 작성하십시오.

(0 <= x, y <= 10,000)

하나. xy 추가

x를 y의 자식으로 추가합니다.

x는 1씩 1씩 증가하도록 지정됩니다.

y가 존재하지 않는 경우는 존재하지 않습니다.

2. x 제거(예외 처리 필요)

노드 x를 삭제합니다.

x의 모든 자식은 x 부모의 자식이 됩니다.

x가 루트이거나 존재하지 않는 경우 무시됩니다.

삼. xy 이동

x를 y의 자식으로 변경합니다.

노드 x 또는 y가 존재하지 않는 경우, y가 x의 자손인 경우 또는 x==y인 경우 무시하십시오.

4. 쿼리 x

x의 근에서 a까지의 거리

b가 x와 가장 가까운 노드 사이의 거리인 경우

a 또는 b를 찾아서 인쇄하십시오.

x가 존재하지 않는 경우는 존재하지 않습니다.


보통 중골에서 cpp 파일을 제공하는 것은 무언가를 설명하기 위한 기본적인 문제인 경우가 많습니다.

이 문제는 unordered_set이라는 새로운 테마의 문제이기도 하므로 빠르게 해결하고자 합니다.