만드는 중입니다

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

트리핑

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

요약
트리와 질의들이 주어집니다. 각 질의에서 주어진 k개 노드까지 거리의 합이 가장 작은 노드를 찾아 그 합을 출력합니다.
난이도

보통10점 중 7점

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

문제

NN개의 노드로 이루어진 트리가 주어진다. 다음 형식의 쿼리를 QQ개 처리한다.

  • k u_1 u_2 ... u_k: 트리에서 임의의 노드를 하나 선택한다. 선택한 노드에서 u1,u2,…,uku_1, u_2, \dots, u_k번 노드까지의 거리 합의 최솟값을 출력한다.

입력

첫 번째 줄에 노드의 개수 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N≤3000001 \le N \le 300000; 1≤Q≤5000001 \le Q \le 500000)

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

다음 QQ개의 줄에 쿼리 k u_1 u_2 ... u_k가 주어진다. (1≤k≤N1 \le k \le N; 1≤ui≤N1 \le u_i \le N; i≠ji \ne j이면 ui≠uju_i \ne u_j)

모든 쿼리의 kk를 합하면 500000500000 이하이다.

출력

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

예제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