2045: Fixed Link & Cut Tree
[만든사람 : jbs33_PJW]
문제 설명
정점이 N개이고 루트 노드가 1인 트리에 대하여, 다음 Q개의 쿼리를 처리하는 프로그램을 구성하시오.
1 x : x와 x의 부모 노드를 연결하는 간선을 제거한다.
항상 간선이 존재하는 경우만 쿼리로 주어진다.
2 x: x와 x의 부모 노드에 대해 1번 쿼리에 의해 제거되었던 간선을 생성한다.
항상 간선이 제거된 경우만 쿼리로 주어진다.
3 p q: 정점 p와 q를 연결하는 경로가 존재하면 1, 그렇지 않다면 0을 출력한다.
입력 설명
첫째 줄에 정점의 개수 N과 쿼리의 개수 Q ( 1 ≤ N , Q ≤ 100000 ) 이 주어진다.
둘째 줄부터 N-1개의 줄에 정수 x (1 ≤ x ≤ N)이 주어진다.
i번째 줄의 x는 정점 i의 부모가 정점 x임을 의미한다.
다음으로 Q개의 줄에 쿼리가 주어진다.
둘째 줄부터 N-1개의 줄에 정수 x (1 ≤ x ≤ N)이 주어진다.
i번째 줄의 x는 정점 i의 부모가 정점 x임을 의미한다.
다음으로 Q개의 줄에 쿼리가 주어진다.
출력 설명
3번 쿼리가 주어질 때마다 한 줄에 하나씩 답을 출력한다.
3번 쿼리는 반드시 하나 이상 주어진다.
3번 쿼리는 반드시 하나 이상 주어진다.
입력 예시 Copy
5 4
1
1
2
3
1 2
3 4 5
2 2
3 4 5
출력 예시 Copy
0
1