문제 149
선택한 정점의 가상 트리
$N$개의 정점으로 이루어지고 간선의 길이가 모두 $1$인 트리가 주어진다. 정점의 번호는 $0$부터 $N-1$까지이며, 루트의 번호는 $R$이다.
선택한 정점을 담은 $K$개의 목록이 주어진다. 각 목록에 대해 중복 정점을 제거한 뒤, 선택한 모든 정점 쌍의 최소 공통 조상을 추가하여 정점 집합 $V$를 만든다. $V$의 각 정점에서 자기 자신을 제외한 조상 중 $V$에 속하는 가장 가까운 조상이 있으면 그 조상과 간선으로 연결한다. 간선의 길이는 원래 트리에서 두 정점 사이의 거리로 정한다. 이렇게 만든 트리를 가상 트리라고 하자.
각 목록의 가상 트리에서 정점 수와 간선 길이의 합을 구해 보자. 선택한 정점이 없다면 두 값은 모두 $0$이다.
입력
첫 번째 줄에 테스트 케이스의 수를 의미하는 정수 $Q$가 주어진다. $(1\le Q\le100)$
각 테스트 케이스의 첫 번째 줄에 정수 $N$, $R$, $K$가 공백으로 구분되어 주어진다. $(1\le N\le100\,000; 0\le R<N; 1\le K\le10\,000)$
두 번째 줄부터 $N-1$개의 줄에 걸쳐 간선의 양 끝 정점의 번호를 의미하는 정수 $u$, $v$가 공백으로 구분되어 주어진다. $(0\le u,v<N; u\ne v)$ 주어진 간선은 트리를 이룬다.
그다음 줄부터 $K$개의 줄에 걸쳐 선택한 정점의 수를 의미하는 정수 $t$와 정점 번호 $a_1, a_2, \cdots, a_t$가 공백으로 구분되어 주어진다. $(0\le t\le200\,000; 0\le a_i<N)$ 같은 정점을 여러 번 선택할 수 있다.
모든 테스트 케이스에 대한 $N$의 합은 $200\,000$ 이하이다. 모든 테스트 케이스의 모든 목록에 대한 $t$의 합은 $200\,000$ 이하이다.
출력
각 테스트 케이스의 정점 목록마다 가상 트리의 정점 수와 간선 길이의 합을 공백으로 구분하여 입력 순서대로 한 줄에 출력한다.
예제 입력 1
3 5 4 4 0 1 0 2 1 3 0 4 0 1 0 5 2 0 2 1 1 5 0 1 2 3 4 3 0 4 0 1 1 2 0 1 0 5 1 1 2 1 1 3 0 1 2 2 0 4 0 1 0 1 0 5 0 1 0 1 1 2 0 1
예제 출력 1
0 0 1 0 3 2 5 4 0 0 1 0 2 1 3 2 0 0 1 0 2 1 2 1