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

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

HH 왕국

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

요약
트리에서 여러 정점 집합이 주어질 때, 각 집합의 모든 두 정점 사이 거리의 합의 두 배를 구한다.
난이도

어려움10점 중 8점

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

문제

HH는 경쟁 프로그래밍 최강국이다. HH에는 1번부터 nn번까지 번호가 붙은 도시가 있고, 도시 사이는 도로로 이어져 있다. 서로 다른 두 도시를 잇는 경로는 언제나 정확히 하나뿐이다. 즉 HH의 도시와 도로는 트리를 이룬다.

HH는 미래 기반 시설 개발 사업의 예산을 나누려고 대회를 연다. 대회는 mm개의 라운드로 이루어지고, ii번째 라운드가 ii번째 예산의 배분을 정한다. 배분은 그 예산에 걸린 도시 kik_i개가 벌이는 더블 라운드 로빈의 결과로 정해진다. 서로 다른 두 참가 도시 A와 B에 대해 A가 B로 원정하는 경기와 B가 A로 원정하는 경기가 각각 한 번씩 열린다. 그래서 한 라운드에서 열리는 경기는 모두 ki×(ki−1)k_i \times (k_i - 1)번이다.

출장비를 정확히 정산하려면 라운드마다 참가 도시 사이의 총 이동 거리를 알아야 한다. 한 경기의 이동 거리는 원정 팀이 출발한 도시에서 경기가 열리는 도시까지 이어지는 유일한 경로에 놓인 도로의 수이다. 라운드마다 그 라운드에서 열리는 모든 경기의 이동 거리를 합한 값을 구하여라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 도시의 수 nn과 라운드의 수 mm이 주어진다. 이어지는 n−1n - 1개의 줄에는 각각 두 정수 uu와 vv가 주어지며, 도시 uu와 도시 vv를 잇는 도로가 있다는 뜻이다. 이어지는 mm개의 줄에는 각각 ii번째 라운드의 참가 도시 수 kik_i가 먼저 주어지고, 같은 줄에 참가 도시의 번호 ci,1,ci,2,…,ci,kic_{i,1}, c_{i,2}, \dots, c_{i,k_i}가 주어진다.

  • 1≤T≤1001 \le T \le 100
  • 2≤n≤1052 \le n \le 10^5
  • 1≤m≤1051 \le m \le 10^5
  • 1≤u,v,ci,j≤n1 \le u, v, c_{i,j} \le n
  • 2≤ki≤n2 \le k_i \le n
  • 한 라운드 안에서 ci,jc_{i,j}는 모두 서로 다르다.
  • 한 테스트 케이스에서 ∑iki≤2×105\sum_i k_i \le 2 \times 10^5이다.
  • 입력 파일의 크기는 60MB를 넘지 않는다.

출력

각 라운드마다 그 라운드의 총 이동 거리를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    2
    2 2
    1 2
    2 1 2
    2 2 1
    5 3
    1 2
    2 3
    2 4
    1 5
    2 3 5
    3 3 4 5
    5 1 2 3 4 5
    
    예상 출력
    2
    2
    6
    16
    36
    
  2. 예제 2

    입력
    1
    6 3
    1 2
    2 3
    3 4
    4 5
    5 6
    2 1 6
    3 2 3 4
    6 1 2 3 4 5 6
    
    예상 출력
    10
    8
    70