만드는 중입니다

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

포병

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

요약
정점이 N개인 트리에서 말이 턴마다 인접 정점으로 움직일 때, 말을 반드시 맞히는 데 필요한 대포의 최소 개수 K를 구합니다.
난이도

보통10점 중 7점

유형
트리, DFS, 동적 계획법
정답자
아직 제출이 없습니다

문제

트리가 주어진다. 트리의 정점 NN개 중 한 정점에 폰이 놓여 있다.

KK개의 포병 대포가 있고, 대포로 연속된 이동을 할 수 있다. 각 이동은 선택한 정점들에 모든 대포를 쏘는 것이다. 따라서 매 이동마다 트리의 정점 KK개를 맞힌다. 두 이동 사이에 폰은 인접한 정점으로 가거나 제자리에 머물 수 있다. 각 이동 후에도 트리는 변하지 않는다. 폰이 어디 있는지는 알 수 없다.

폰을 반드시 맞힐 수 있는 KK의 최솟값을 구하라.

입력

첫 줄에 부분 테스트의 개수 TT가 주어진다. 각 부분 테스트마다 한 줄에 NN이 주어지고, 이어서 N−1N-1개의 줄에 트리의 간선을 나타내는 두 정수가 주어진다. 정점은 0부터 번호가 매겨진다.

출력

TT줄을 출력한다. 각 줄에는 해당 부분 테스트의 KK 최솟값을 출력한다.

제한

1≤T≤101 \le T \le 10

1≤N≤100 0001 \le N \le 100\,000

힌트

첫 번째 부분 테스트에서는 대포 3개로 다음 이동을 하면 폰을 반드시 맞힐 수 있다.

1번째 이동: 0, 1, 4를 맞힌다

2번째 이동: 0, 2, 5를 맞힌다

3번째 이동: 0, 3, 6을 맞힌다

4번째 이동: 0, 3, 7을 맞힌다

이 이동에서는 폰이 항상 맞는다. 대포가 더 적으면 폰이 맞지 않게 피할 수 있다.

예제1

  1. 예제 1

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