트리

루트가 있는 트리에서 간선 삭제와 연결 여부 질의가 순서대로 주어질 때, 각 질의마다 경로 존재 여부를 YES 또는 NO로 답한다.

보통6유니온 파인드트리DFS구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

트리 T는 정점과 에지로 이루어진다. 정점은 원으로 그리고, 두 정점을 잇는 선을 에지라고 한다. 가장 위에 있는 정점을 루트라고 하며 루트는 오직 하나다. 정점 N개에는 1부터 N까지 번호를 붙이고, 루트는 항상 1번이다.

두 정점 v와 w를 잇는 경로는 정점의 순서 목록 (v0,v1,,vm)(v_0, v_1, \dots, v_m)이다. 여기서 v0=vv_0 = v, vm=wv_m = w이고 viv_ivi+1v_{i+1}은 에지로 이어져 있다. 트리에서는 임의의 두 정점 사이에 경로가 정확히 하나 존재한다. 그림 1에서 정점 3과 정점 11을 잇는 유일한 경로는 (3, 4, 1, 7, 11)이다.

그림 1

정점 v에서 루트까지 가는 유일한 경로를 P라고 하자. v와 에지로 이어진 정점 중에서 P 위에 있는 정점을 v의 부모 정점이라고 한다. 그림 1에서 4, 7, 9의 부모 정점은 1이고, 2와 11의 부모 정점은 7이다.

에지 하나를 제거하면 그 에지의 양 끝 정점뿐 아니라 다른 정점 쌍 사이의 경로도 함께 끊길 수 있다. 그림 1에서 7과 11 사이의 에지를 제거하면 8과 5를 잇는 경로가 사라진다.

트리 정보가 주어지고, 에지 제거와 질의가 임의의 순서로 섞여 주어진다. 작업을 주어진 순서대로 수행하면서 각 질의의 답을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 트리의 정점 개수 N과 질의 개수 Q가 주어진다 (1N,Q2000001 \le N, Q \le 200000).

다음 N-1개 줄 중 i번째 줄에는 정점 i+1의 부모 정점 번호 a가 주어진다 (1aN1 \le a \le N).

그다음 (N-1)+Q개 줄에 작업이 주어진다. 이 중 N-1개는 (1)의 형태이고, Q개는 (2)의 형태다.

(1) 두 정수 x와 b가 주어진다 (x=0x = 0, 2bN2 \le b \le N). b와 b의 부모 정점을 잇는 에지를 제거한다는 뜻이다. 각 줄의 b는 모두 다르다.

(2) 세 정수 x, c, d가 주어진다 (x=1x = 1, 1c,dN1 \le c, d \le N). c와 d를 잇는 경로가 있는지 묻는 질의다.

출력

질의마다 한 줄씩, 주어진 순서대로 답을 출력한다. 경로가 있으면 YES를, 없으면 NO를 출력한다.