트리핑

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

요약
각 쿼리마다 주어진 트리 노드들에 대해, 임의의 노드를 하나 골라 그 노드와의 거리 합을 최소로 만들었을 때의 값을 구한다.
난이도

어려움10점 중 8점

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

문제

NN개의 노드로 이루어진 트리가 주어질 때 다음 쿼리를 QQ개 처리해 보자.

  • k,u_1,u_2,…,u_kk \\, u\_1 \\, u\_2 \\, \dots \\, u\_k: 트리에서 임의의 노드를 선택한 다음, 선택한 노드와 u_1,u_2,…,u_ku\_1, u\_2, \dots, u\_k번 노드들과의 거리의 합의 최솟값을 출력한다.

입력

첫 번째 줄에 트리의 노드 개수 NN, 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N≤300,000;1≤Q≤500,000)(1 \le N \le 300\\,000;1 \le Q \le 500\\, 000)

두 번째 줄부터 N−1N-1개의 줄에 걸쳐 트리의 간선을 이루는 서로 다른 두 노드의 번호 aa, bb가 공백으로 구분되어 주어진다. (1≤a,b≤N)(1\le a, b \le N)

다음 QQ개의 줄에 걸쳐 쿼리 k,u_1,u_2,…u_kk \\, u\_1 \\, u\_2 \\, \dots u\_k가 주어진다. (1≤k≤N(1 \le k \le N; 1≤u_i≤N1 \le u\_i \le N; i≠j  ⟹  u_i≠u_j)i \ne j \implies u\_i \ne u\_j)

모든 쿼리에 대하여 kk의 합은 500,000500\\, 000 이하이다.

출력

각 쿼리마다 주어진 노드들과 선택한 노드 사이 거리 합의 최솟값을 QQ개의 줄에 걸쳐 하나씩 출력한다.

예제1

  1. 예제 1

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