압축된 생성 부분트리
시간 제한2초메모리 제한256 MB
차수가 2인 정점이 없는 숨겨진 트리를, 고른 집합의 압축 생성 부분트리 정점 수를 질의하여 복원합니다.
문제
정점 개로 이루어진 트리 가 있으며, 정점 번호는 1부터 까지이다. 정점 집합 에 속한 정점을 생성된 정점(spanned)이라 하고, 에 속하지 않은 정점을 생성되지 않은 정점(not spanned)이라 한다. 압축 생성 부분트리 는 다음 알고리즘으로 구한다.
- 로 둔다.
- 생성되지 않은 정점 중 연결된 간선이 정확히 하나인 정점이 있으면, 그 정점을 간선과 함께 제거한다.
- 2번의 조건이 계속 성립하면 2번을 반복한다.
- 생성되지 않은 정점 중 연결된 간선이 정확히 두 개인 정점이 있으면, 그 정점과 두 간선을 제거하고 남은 두 끝점을 잇는 새 간선을 추가한다.
- 4번의 조건이 계속 성립하면 4번을 반복한다.
형식적으로, 는 의 모든 정점을 포함하는 의 가장 작은 부분 그래프이며, 나머지 차수가 2 이하인 정점은 펴서 없앤 그래프이다.

테스트 1의 트리와 , 일 때의 압축 생성 부분트리이다.
트리 는 주어지지 않는다. 대신 를 찾아야 한다. 다음 형태의 질문을 할 수 있다: "의 압축 생성 부분트리는 정점을 몇 개 포함하는가?" 이 질문만으로는 트리를 찾을 수 없으므로, 에는 연결된 간선이 정확히 두 개인 정점이 없다.