Äventyr 1
면접 대비시간 제한1초메모리 제한256 MB
1번부터 N번까지의 경로에서 정점이 하나씩 활성화될 때, 질의한 정점에서 가장 가까운 활성 정점까지의 거리를 구하고 아직 활성 정점이 없으면 -1을 출력한다.
문제
"Äventyr bortom tidpunkten, Sista Fiolen."
여러 시간축을 오가며 잊힌 나라의 전설의 바이올린을 찾으려 한다. 시간축은 트리의 정점이고, 트리의 간선은 두 시간축 사이를 오갈 수 있다는 뜻이다. 시간축에는 1부터 까지 번호가 붙어 있다. 시간축 중 몇몇은 전설의 바이올린이 존재했던 시간축이고, 나머지는 아니다. 처음에는 바이올린이 존재했던 시간축이 하나도 없다.
트리가 주어진 뒤 다음 두 종류의 쿼리를 번 수행한다.
1 u: 번 시간축이 바이올린이 존재했던 시간축이 된다.2 u: 번 시간축에서 출발하는 여행이 바이올린이 존재했던 시간축에 도착할 때까지 간선을 최소 몇 번 지나야 하는지 출력한다. 번 시간축 자체가 바이올린이 존재했던 시간축이면 답은 0이다. 바이올린이 존재했던 시간축이 아직 하나도 없으면 -1을 출력한다.
입력
첫째 줄에 과 가 주어진다. ()
둘째 줄에 개의 정수 이 주어진다. 는 번 시간축의 트리 상 부모이다. (, ) 이 문제에서 트리는 항상 한 줄로 이어진 경로이며 모든 에 대해 이다. 즉 2번 정점의 부모는 1번, 3번 정점의 부모는 2번, ..., 번 정점의 부모는 번이다. 이면 둘째 줄은 빈 줄이다.
다음 개의 줄에 쿼리가 c u 형식으로 한 줄에 하나씩 주어진다. 이면 1번 쿼리, 이면 2번 쿼리를 수행한다. (, ) 1번 쿼리는 같은 시간축에 대해 두 번 이상 주어지지 않는다.
출력
모든 2번 쿼리의 답을 주어진 순서대로 한 줄에 하나씩 출력한다.