만드는 중입니다

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

간선 하나를 가진 트리

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

요약
뿌리가 있는 트리에서 간선 (u, v)를 하나 추가했을 때 앨리스가 이기는 쌍의 개수를 구합니다. 토큰은 자식 노드로만 이동합니다.
난이도

어려움10점 중 8점

유형
트리, 게임 이론, DFS
정답자
아직 제출이 없습니다

문제

Alice와 Bob은 루트가 1번 정점인 트리에서 게임을 한다. 토큰을 루트에 놓고 Alice부터 번갈아 토큰을 움직인다. 한 턴에 플레이어는 토큰이 있는 정점에서 그 정점의 자식 중 하나로 토큰을 옮겨야 한다. 자기 턴에 가능한 이동이 없으면 그 플레이어가 진다.

게임을 시작하기 전에 Alice는 트리에 방향 간선 (u,v)(u, v)를 하나 추가할 수 있다. 게임 중에 토큰이 정점 uu에 있고 추가 간선이 남아 있으면, 현재 플레이어는 토큰을 정점 vv로 옮길 수 있다. 이때 추가 간선은 삭제되므로 한 게임에서 최대 한 번만 쓸 수 있다.

가능한 n2n^2개의 쌍 (u,v)(u, v) 중에서, 두 플레이어가 최적으로 플레이할 때 Alice가 이기게 하는 쌍은 몇 개인가? u=vu = v도 허용되며, 트리에 이미 있는 간선과 같은 쌍(어느 방향이든)도 허용된다.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤1041\le t\le 10^4)가 주어진다.

각 테스트 케이스의 첫 줄에는 정점의 수 nn (2≤n≤2⋅1052\leq n\leq 2\cdot 10^5)이 주어진다.

다음 줄에는 루트를 제외한 각 정점의 부모 p2,p3,…,pnp_2, p_3, \ldots, p_n (1≤pi<i1 \le p_i < i)이 n−1n-1개의 정수로 주어진다.

모든 테스트 케이스의 nn의 합은 2⋅1052\cdot 10^5를 넘지 않는다.

출력

각 테스트 케이스마다 Alice가 이길 수 있게 하는 쌍 (u,v)(u, v)의 개수를 한 줄에 출력한다.

힌트

첫 번째 테스트 케이스에서 Alice에게 승리 전략을 주는 간선은 아래 4개이다.

예제1

  1. 예제 1

    입력
    4
    3
    1 2
    6
    1 1 3 3 5
    6
    1 2 3 4 5
    5
    1 1 1 1
    
    예상 출력
    4
    33
    27
    25