아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

친자 확인

시간 제한3초메모리 제한512 MB

요약
루트가 있는 트리에서 [l, r] 구간의 각 i에 대해 cnt(i, l, r)을 더한 값을 구한다. cnt는 부분 트리에서 레이블이 [l, r]에 속하는 노드 수이며, 각 질의는 직전 답으로 암호화되어 들어온다.
난이도

어려움10점 중 8점

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

문제

노드 11번부터 nn번까지 번호가 붙은 nn개의 노드로 이루어진 트리가 있다. 트리의 루트는 11번 노드다. 함수 cnt(v,l,r)cnt(v, l, r)은 노드 vv의 서브트리에 속하면서 번호가 ll 이상 rr 이하인 노드의 개수로 정의한다. qq개의 질의에 답해야 한다. 질의는 순서쌍 (li,ri)(l_i, r_i)로 주어진다. 질의의 답은 합 ∑l≤i≤rcnt(i,l,r)\sum_{l \le i \le r} cnt(i, l, r)이다.

입력

첫째 줄에 정수 nn이 주어진다. 이는 트리의 노드 개수다.

다음 n−1n - 1개의 줄에는 트리에서 각 노드의 부모가 주어진다. 이 n−1n - 1개의 줄 중 ii번째 줄에는 i+1i + 1번 노드의 부모 번호가 들어 있다.

그다음 줄에는 정수 qq가 하나 주어진다. 이는 답해야 하는 질의의 개수다.

다음 qq개의 줄에는 인코딩된 질의를 나타내는 두 수 uiu_i와 viv_i가 주어진다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 질의 (li,ri)(l_i, r_i)의 답을 출력한다.

제한

  • 1≤n≤500001 \le n \le 50000
  • 1≤q≤500001 \le q \le 50000
  • 0≤ui,vi≤1090 \le u_i, v_i \le 10^9

ansians_i를 ii번째 질의의 답이라 하자(ans0=0ans_0 = 0). 그러면 ii번째 질의의 매개변수는 다음과 같다.

  • xi=1+((ui⊕ansi−1)mod  n)x_i = 1 + ((u_i \oplus ans_{i-1}) \mod n)
  • yi=1+((vi⊕ansi−1)mod  n)y_i = 1 + ((v_i \oplus ans_{i-1}) \mod n)
  • li=min(xi,yi)l_i = min(x_i, y_i)
  • ri=max(xi,yi)r_i = max(x_i, y_i)

예제1

  1. 예제 1

    입력
    9
    1
    2
    3
    4
    5
    5
    7
    8
    5
    0 8
    1 2
    2 3
    4 5
    6 7
    
    예상 출력
    42
    8
    3
    3
    3