새 축사

노드를 하나씩 추가하며 숲을 키우는 질의와 특정 노드에서 가장 먼 노드까지의 거리를 묻는 질의를 온라인으로 처리한다.

어려움8트리그래프BFS동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

존 농부는 소가 너무 가까이 모여 있으면 서로 다툰다는 것을 알아차렸다. 그래서 소를 넓게 흩어 놓으려고 축사를 하나씩 새로 짓기로 했다.

존은 축사를 새로 지을 때마다 이미 지어 둔 축사 중 많아야 한 곳과 양방향 통로로 잇는다. 소가 충분히 떨어져 있는지 확인하려고, 존은 어떤 축사에서 통로를 따라 갈 수 있는 가장 먼 축사까지의 거리를 알고 싶어 한다. 두 축사 사이의 거리는 한쪽에서 다른 쪽으로 갈 때 지나는 통로의 개수다.

존이 주는 질의는 모두 QQ개(1Q1051 \leq Q \leq 10^5)이며, 축사를 짓는 질의이거나 거리를 묻는 질의다. 짓는 질의에서 존은 축사를 하나 지어 이미 지어 둔 축사 중 많아야 한 곳과 잇는다. 거리 질의에서 존은 특정 축사에서 통로를 따라 갈 수 있는 가장 먼 축사까지의 거리를 묻는다. 질의에 나오는 축사는 이미 지어져 있다. 모든 질의에 답하라.

입력

첫 줄에 정수 QQ가 주어진다. 다음 QQ개 줄에 질의가 한 줄에 하나씩 주어진다. 질의는 "B p" 또는 "Q k" 형태다. "B p"는 축사를 새로 지어 축사 pp와 이으라는 뜻이고, "Q k"는 축사 kk에서 가장 먼 축사까지의 거리를 답하라는 뜻이다. p=1p = -1이면 새 축사는 어느 축사와도 잇지 않는다. 그렇지 않으면 pp는 이미 지어 둔 축사의 번호다. 축사 번호는 11부터 시작한다. 가장 먼저 지은 축사가 11번, 그다음에 지은 축사가 22번이며, 이후에도 같은 방식으로 번호가 붙는다.

출력

거리 질의마다 답을 한 줄에 하나씩 출력한다. 어느 축사와도 이어져 있지 않은 축사의 가장 먼 거리는 00이다.

힌트

예제 1의 입력은 아래와 같이 이어진 축사를 나타낸다.

  (1) 
    \   
     (2)---(4)
    /
  (3)

질의 1에서 11번 축사를 짓는다. 질의 2에서는 11번에서 가장 먼 축사까지의 거리를 묻는다. 11번은 어느 축사와도 이어져 있지 않으므로 답은 00이다. 질의 3에서 22번 축사를 지어 11번과 잇고, 질의 4에서 33번 축사를 지어 22번과 잇는다. 질의 5에서는 33번에서 가장 먼 축사를 묻는다. 가장 먼 축사는 11번이고 거리가 22이므로 답은 22다. 질의 6에서 44번 축사를 지어 22번과 잇는다. 질의 7에서는 22번에서 가장 먼 축사를 묻는다. 11번, 33번, 44번이 모두 거리 11로 같으므로 답은 11이다.