정확히 두 번 제거
면접 대비시간 제한2초메모리 제한2048 MB
트리가 주어질 때 정점 두 개를 각각 edge와 함께 제거해 남는 연결 요소의 최대 개수를 구합니다.
문제
최근 리틀 존은 이모에게서 집을 꾸밀 나무 한 그루를 받았다. 하지만 나무 한 그루로는 집 전체를 꾸미기에 부족해 보인다. 리틀 존에게 아이디어가 떠올랐다. 나무에서 정점 몇 개를 제거하면 나무가 여러 그루로 늘어나지 않을까? 맞지?
정점이 개인 트리가 주어진다. 다음 연산을 정확히 두 번 수행해야 한다.
- 정점 를 하나 고른다.
- 에 연결된 모든 간선과 정점 를 제거한다.
연산을 정확히 두 번 수행한 뒤 얻을 수 있는 연결 요소 개수의 최댓값을 구하시오.
두 정점 와 는 에서 로 가는 경로가 존재할 때에만 같은 연결 요소에 속한다. 참고로 정점이 개인 그래프는 정의에 따라 연결 요소가 개이다.
트리는 사이클이 없는 연결 그래프이다.
그런데 이런 그래프가 연결되어 있다고 할 수 있을까?
입력
첫 줄에 테스트 케이스의 개수 ()가 주어진다. 테스트 케이스의 설명이 이어진다.
각 테스트 케이스의 첫 줄에는 정수 ()이 하나 주어진다.
이어지는 개의 줄에는 간선으로 연결된 두 정점 와 (, )가 주어진다. 주어지는 간선들은 트리를 이룬다.
모든 테스트 케이스에 대한 의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 연결 요소 개수의 최댓값을 한 줄에 출력한다.
힌트
첫 번째 테스트 케이스에서 정점을 두 번 제거하면 그래프가 비게 된다. 정점이 개인 그래프의 연결 요소는 정의상 개이므로 답은 이다.
두 번째 테스트 케이스에서 정점 과 를 제거하면 연결 요소가 개 남는다. 정점이 개뿐이므로 연결 요소를 개 만들 수 없고, 답은 이다.
세 번째 테스트 케이스에서 정점 과 를 제거하면 연결 요소가 개 남는다. 그 집합은 , , , 이다. 연결 요소를 개 만드는 것이 불가능함을 보일 수 있으므로 답은 이다.