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

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

개미

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

요약
트리의 각 정점에 개미가 하나씩 있습니다. 매 질의마다 모든 개미를 질의된 개미의 현재 위치 쪽으로 한 칸씩 옮긴 뒤, 같은 정점에 있는 개미 쌍의 수를 구합니다.
난이도

어려움10점 중 8점

유형
트리, DFS, 구현
정답자
아직 제출이 없습니다

문제

정점이 11부터 nn까지 번호로 매겨진 트리가 주어진다. 트리의 각 정점에는 개미가 있다. 처음에는 정점 ii마다 번호가 ii인 개미가 한 마리씩 있다.

qq개의 질의가 주어진다. 질의 jj에는 도움이 필요한 개미의 번호 aja_j가 들어 있다. 질의 jj가 처리되는 동안 모든 개미는 개미 aja_j에 가장 가까운 인접 정점으로 이동한다. 이미 개미 aja_j와 같은 정점에 있는 개미는 움직이지 않는다. 각 질의가 끝난 뒤에는 같은 정점에 있는 개미 쌍의 총 개수를 출력한다.

개미의 위치 변화는 질의 사이에도 계속 유지된다. 예를 들어 개미 a2a_2 쪽으로 이동해야 할 때, 개미들은 이미 개미 a1a_1 쪽으로 이동한 뒤의 위치에 있다. 또한 각 질의는 개미 aja_j 쪽으로 이동해야 하며, 이 개미는 처음에 정점 aja_j에 있었지만 질의 시점에는 다른 정점에 있을 수 있다.

입력

입력의 첫 줄에는 트리의 크기를 나타내는 정수 nn이 주어진다 (2≤n≤1052 \le n \le 10^5).

다음 n−1n - 1개의 줄에는 트리의 간선을 나타내는 두 정수 uu와 vv가 각각 주어진다 (1≤u,v≤n1 \le u, v \le n). 간선들은 트리를 이룬다고 보장된다.

다음 줄에는 질의의 개수를 나타내는 정수 qq가 주어진다 (1≤q≤1051 \le q \le 10^5).

다음 qq개의 줄에는 질의에 등장하는 개미의 번호 a1,a2,…,aqa_1, a_2, \ldots, a_q가 한 줄에 하나씩 주어진다 (1≤aj≤n1 \le a_j \le n).

출력

각 질의마다 한 줄에 그 질의가 끝난 뒤 같은 정점에 있는 개미 쌍의 개수를 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2
    1 3
    2 4
    2 5
    5
    1
    1
    3
    3
    5
    
    예상 출력
    4
    10
    10
    10
    10
    
  2. 예제 2

    입력
    8
    1 2
    1 3
    2 4
    2 5
    3 6
    3 7
    7 8
    6
    1
    3
    4
    2
    5
    6
    
    예상 출력
    5
    21
    28
    28
    28
    28