Äventyr 1

1번부터 N번까지의 경로에서 정점이 하나씩 활성화될 때, 질의한 정점에서 가장 가까운 활성 정점까지의 거리를 구하고 아직 활성 정점이 없으면 -1을 출력한다.

쉬움3배열정렬이분 탐색시뮬레이션면접 대비아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

"Äventyr bortom tidpunkten, Sista Fiolen."

여러 시간축을 오가며 잊힌 나라의 전설의 바이올린을 찾으려 한다. 시간축은 트리의 정점이고, 트리의 간선은 두 시간축 사이를 오갈 수 있다는 뜻이다. 시간축에는 1부터 NN까지 번호가 붙어 있다. 시간축 중 몇몇은 전설의 바이올린이 존재했던 시간축이고, 나머지는 아니다. 처음에는 바이올린이 존재했던 시간축이 하나도 없다.

트리가 주어진 뒤 다음 두 종류의 쿼리를 QQ번 수행한다.

  • 1 u: uu번 시간축이 바이올린이 존재했던 시간축이 된다.
  • 2 u: uu번 시간축에서 출발하는 여행이 바이올린이 존재했던 시간축에 도착할 때까지 간선을 최소 몇 번 지나야 하는지 출력한다. uu번 시간축 자체가 바이올린이 존재했던 시간축이면 답은 0이다. 바이올린이 존재했던 시간축이 아직 하나도 없으면 -1을 출력한다.

입력

첫째 줄에 NNQQ가 주어진다. (1N,Q1051 \le N, Q \le 10^5)

둘째 줄에 N1N - 1개의 정수 A2,A3,,ANA_2, A_3, \ldots, A_N이 주어진다. AiA_iii번 시간축의 트리 상 부모이다. (1AiN1 \le A_i \le N, AiiA_i \ne i) 이 문제에서 트리는 항상 한 줄로 이어진 경로이며 모든 ii에 대해 Ai=i1A_i = i - 1이다. 즉 2번 정점의 부모는 1번, 3번 정점의 부모는 2번, ..., NN번 정점의 부모는 N1N - 1번이다. N=1N = 1이면 둘째 줄은 빈 줄이다.

다음 QQ개의 줄에 쿼리가 c u 형식으로 한 줄에 하나씩 주어진다. c=1c = 1이면 1번 쿼리, c=2c = 2이면 2번 쿼리를 수행한다. (c{1,2}c \in \{1, 2\}, 1uN1 \le u \le N) 1번 쿼리는 같은 시간축에 대해 두 번 이상 주어지지 않는다.

출력

모든 2번 쿼리의 답을 주어진 순서대로 한 줄에 하나씩 출력한다.