해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
Danil은 돈을 벌기로 결심하여 아르바이트를 구했다. 면접은 잘 진행되었고, 이제 그는 전등 스위치를 조작하는 일을 한다.
Danil은 n개의 정점을 가진 루트 있는 트리(무방향 연결 비순환 그래프)에서 일하며, 정점 1이 트리의 루트이다. 각 정점에는 방이 하나씩 있고, 각 방의 전등은 켜거나 끌 수 있다. Danil의 업무에는 어떤 정점의 서브트리에 있는 모든 방의 전등 상태를 전환하는 일이 포함된다. 즉, 서브트리의 어떤 방에서 전등이 켜져 있다면 꺼야 한다. 그렇지 않다면 켜야 한다.
불행히도(또는 다행히도) Danil은 매우 게으르다. 그는 상사가 직접 업무를 확인하지 않을 것임을 알고 있다. 대신 상사는 Workforces 개인 메시지로 Danil에게 작업을 보낸다.
작업에는 두 가지 유형이 있다.
정점 v의 서브트리는 각 정점에서 루트까지의 최단 경로가 v를 통과하는 정점들의 집합이다. 특히 정점 v는 v의 서브트리에 속한다.
Danil은 자신의 업무를 수행할 생각이 없다. 그는 자신을 대신해 상사에게 답하는 프로그램을 작성해 달라고 요청한다.
첫 번째 줄에는 트리의 정점 수를 나타내는 하나의 정수 n (1 ≤ n ≤ 200 000)가 주어진다.
두 번째 줄에는 공백으로 구분된 n - 1개의 정수 p2, p3, ..., pn (1 ≤ pi < i)가 주어지며, pi는 정점 i의 조상이다.
세 번째 줄에는 공백으로 구분된 n개의 정수 t1, t2, ..., tn (0 ≤ ti ≤ 1)가 주어진다. 정점 i의 전등이 켜져 있으면 ti는 1이고, 그렇지 않으면 0이다.
네 번째 줄에는 작업의 수를 나타내는 하나의 정수 q (1 ≤ q ≤ 200 000)가 주어진다.
다음 q개의 줄에는 위에서 설명한 작업인 get v 또는 pow v (1 ≤ v ≤ n)가 주어진다.
각 get v 작업마다 v의 서브트리에서 전등이 켜진 방의 수를 출력한다.
4
1 1 1
1 0 0 1
9
get 1
get 2
get 3
get 4
pow 1
get 1
get 2
get 3
get 4
2
0
0
1
2
1
1
0
작업 pow 1 이전의 트리.
작업 pow 1 이후의 트리.