최소 공통 조상과 쿼리

아직 제출이 없습니다시간 제한5초메모리 제한1536 MB

문제

NN개의 정점으로 이루어져 있는 트리 TT가 주어졌을 때, 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • K V_1 V_2  V_KK \ V\_1 \ V\_2 \ \cdots \ V\_K : 1i< jK1 \leq i < j \leq K인 모든 (i,j)(i, j) 쌍에 대해 V_iV\_i번 정점과 V_jV\_j번 정점의 LCA의 레벨의 합을 출력한다.

TT의 루트 정점은 1번 정점이다. 루트 정점의 레벨은 0이며, 다른 정점의 레벨은 (부모 정점의 레벨) + 1로 정의한다.

두 정점 u,vu, v의 LCA는 u,vu, v의 공통 조상 중 가장 가까운 정점(최소 공통 조상)을 의미한다.

입력

첫째 줄에 정점의 개수 NN과 쿼리의 개수 QQ가 주어진다.

둘째 줄에는 2,3,,N2, 3, \cdots, N번 정점의 부모 정점을 나타내는 자연수 P_2,P_3,,P_NP\_2, P\_3, \cdots, P\_N이 주어진다.

다음 QQ개의 줄에는 쿼리를 나타내는 K V_1 V_2  V_KK \ V\_1 \ V\_2 \ \cdots \ V\_K가 공백으로 구분되어 주어진다.

출력

각각의 쿼리마다 한 줄에 하나씩 결과를 출력한다.

제한

  • 2N500,0002 \leq N \leq 500\\,000
  • 1Q500,0001 \leq Q \leq 500\\,000
  • 2 iN2 \le i \le N에 대해 1P_i<i1 \le P\_i < i
  • 2KN2 \leq K \leq N
  • (모든 쿼리에서 KK의 합) 1,000,000\leq 1\\,000\\,000
  • 1V_iN1 \leq V\_i \leq N
  • iji \ne j 이면 V_iV_jV\_i \ne V\_j