트리에서 여러 정점 집합이 주어질 때, 각 집합의 모든 두 정점 사이 거리의 합의 두 배를 구한다.
어려움8트리DFS누적 합아직 제출이 없습니다시간 제한10초메모리 제한512 MBHH는 경쟁 프로그래밍 최강국이다. HH에는 1번부터 n번까지 번호가 붙은 도시가 있고, 도시 사이는 도로로 이어져 있다. 서로 다른 두 도시를 잇는 경로는 언제나 정확히 하나뿐이다. 즉 HH의 도시와 도로는 트리를 이룬다.
HH는 미래 기반 시설 개발 사업의 예산을 나누려고 대회를 연다. 대회는 m개의 라운드로 이루어지고, i번째 라운드가 i번째 예산의 배분을 정한다. 배분은 그 예산에 걸린 도시 ki개가 벌이는 더블 라운드 로빈의 결과로 정해진다. 서로 다른 두 참가 도시 A와 B에 대해 A가 B로 원정하는 경기와 B가 A로 원정하는 경기가 각각 한 번씩 열린다. 그래서 한 라운드에서 열리는 경기는 모두 ki×(ki−1)번이다.
출장비를 정확히 정산하려면 라운드마다 참가 도시 사이의 총 이동 거리를 알아야 한다. 한 경기의 이동 거리는 원정 팀이 출발한 도시에서 경기가 열리는 도시까지 이어지는 유일한 경로에 놓인 도로의 수이다. 라운드마다 그 라운드에서 열리는 모든 경기의 이동 거리를 합한 값을 구하여라.
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 도시의 수 n과 라운드의 수 m이 주어진다. 이어지는 n−1개의 줄에는 각각 두 정수 u와 v가 주어지며, 도시 u와 도시 v를 잇는 도로가 있다는 뜻이다. 이어지는 m개의 줄에는 각각 i번째 라운드의 참가 도시 수 ki가 먼저 주어지고, 같은 줄에 참가 도시의 번호 ci,1,ci,2,…,ci,ki가 주어진다.
각 라운드마다 그 라운드의 총 이동 거리를 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다.