두 정점이 연결되어 있는지 묻는 질의를 처리한 뒤 답에 따라 트리에서 간선 하나를 제거할 수 있어, 온라인 삭제 상황에서 연결성을 관리해야 한다.
어려움8트리유니온 파인드DFS구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB트리 T는 정점과 에지로 이루어진다. 그림 1의 원이 정점이고, 정점과 정점을 잇는 선이 에지다. 가장 위에 놓인 정점을 루트라 하며, 루트는 하나뿐이다. 정점 N개에는 1번부터 N번까지 번호가 붙고 루트는 항상 1번이다.
두 정점 v와 w를 잇는 경로는 정점을 나열한 순서열 (v0,v1,…,vm)이다. 이웃한 vi와 vi+1은 에지로 연결되어 있고, v0=v, vm=w이다. 트리에서는 임의의 두 정점 사이에 이런 경로가 정확히 하나 있다. 그림 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가 주어진다 (1≤N,Q≤200000).
다음 N−1개 줄 가운데 i번째 줄에는 정점 i+1의 부모 정점 번호 a가 주어진다 (1≤a≤N). 주어지는 부모 관계는 항상 1번 정점을 루트로 하는 트리를 이룬다.
다음 Q개 줄에는 각각 세 정수 b, c, d가 주어진다 (1≤b,c≤N, d는 0 또는 1). d=0이면 b와 c를 잇는 경로가 있는지 묻는 질의만 처리한다. d=1이면 같은 질의를 먼저 처리한 뒤, 답이 YES이면 b와 b의 부모 정점을 잇는 에지를 제거하고, 답이 NO이면 c와 c의 부모 정점을 잇는 에지를 제거한다. 제거하려는 에지가 원래 없거나 이미 제거되었으면 아무 에지도 제거하지 않는다.
질의 Q개의 답을 순서대로 Q개 줄에 출력한다. 경로가 있으면 YES를, 없으면 NO를 출력한다.