만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

냉혈 참나무

면접 대비

시간 제한2초메모리 제한1024 MB

요약
뿌리가 있는 트리에서 정점에 전구를 달거나 떼는 연산을 처리하고, x의 서브트리 안 모든 간선을 지나는 전선 수의 합 f(x)를 구합니다.
난이도

보통10점 중 5점

유형
트리, 누적 합, DFS
정답자
아직 제출이 없습니다

문제

뱀파이어는 기이한 존재들이다. 그들은 '불멸'이라는 이름의 연례 축제를 준비하고 있다.

축제를 위해 에드워드는 축제의 상징인 '냉혈 참나무'를 뿌리로 매달아 두라는 임무를 받았다.

'냉혈 참나무'는 평범한 나무이다. 정점은 nn개, 간선은 n−1n-1개이며, 임의의 두 정점 사이에는 단순 경로가 정확히 하나 있다. 뿌리 정점의 번호는 1이다.

뱀파이어는 햇빛 아래에 있을 수 없어서 축제의 주요 행사는 밤에 열린다. 그래서 참나무를 조명으로 쓰기로 했다. 뿌리가 아닌 정점마다 원하는 만큼 전구를 달 수 있다. 시스템의 안정을 위해 전구마다 뿌리 정점에서 따로 전선을 연결한다. 이 전선은 뿌리에서 전구가 달린 정점까지의 나무 경로를 따라가며, 경로에 있는 모든 중간 정점과 간선을 지난다.

에드워드는 어느 정점에 전구를 몇 개 달아야 할지 정하지 못했다.

여러분에게 '냉혈 참나무'의 구조가 주어진다. 정점 v>1v > 1마다 그 정점이 매달린 부모 정점 pvp_v가 주어진다. 여러분은 에드워드의 이상한 질문에 답해야 한다.

  1. add x y: 에드워드가 정점 xx에 전구 yy개를 단다. (2≤x≤n2 \le x \le n, 1≤y≤1041 \le y \le 10^4)
  2. del x y: 에드워드가 정점 xx에서 전구 yy개를 뗀다. (2≤x≤n2 \le x \le n)
  3. ask x: 에드워드가 f(x)f(x)를 구해 달라고 요청한다. (2≤x≤n2 \le x \le n)

f(x)f(x)는 매우 복잡한 함수이다. 에드워드는 이 함수를 설명하기도 어려워하고, 직접 계산해 볼 생각도 하지 않는다. 함수는 다음과 같다.

f(x)=∑v∈ST(x)g(v)f(x) = \sum_{v \in ST(x)} g(v)

여기서 ST(x)ST(x)는 그 정점에 전구를 달았을 때 연결해야 하는 전선이 간선 (x,p(x))(x, p(x))를 지나게 되는 정점들의 집합이다. g(v)g(v)는 현재 간선 (v,p(v))(v, p(v))를 지나는 전선의 개수이다.

입력

첫 줄에는 '냉혈 참나무'의 정점 개수인 자연수 nn (3≤n≤200 0003 \le n \le 200\,000)이 주어진다.

둘째 줄에는 n−1n-1개의 정수 p2,p3,…,pnp_2, p_3, \ldots, p_n (1≤pi≤n1 \le p_i \le n, pi≠ip_i \ne i)이 주어진다.

주어진 '냉혈 참나무'가 트리임이 보장된다.

다음 줄에는 에드워드 질문의 개수인 자연수 mm (1≤m≤200 0001 \le m \le 200\,000)이 주어진다.

다음 mm개의 줄에는 문제에서 설명한 형식의 질문이 주어진다.

모든 질문은 올바르며, 에드워드는 정점에 없는 전구를 떼어 내지 않는다.

출력

각 ask x 질문마다 답을 정수 하나로 한 줄에 출력한다. 답은 질문이 주어진 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    2
    1
    4
    add 2 1
    ask 2
    del 2 1
    ask 2
    
    예상 출력
    1
    0
    
  2. 예제 2

    입력
    5
    1 2 2 1
    12
    add 3 4
    ask 2
    add 4 5
    ask 2
    del 3 1
    ask 2
    del 4 3
    add 5 1
    ask 5
    del 5 1
    ask 5
    ask 2
    
    예상 출력
    8
    18
    16
    1
    0
    10