규칙적인 숲 만들기
시간 제한1초메모리 제한512 MB
트리에서 노드를 제거했을 때 두 개 이상의 서로 동일한 트리로 나뉘는 노드를 찾고, 가능한 최대 조각 수를 구하는 문제입니다.
문제
숲 조성(forestation)은 보통 베어 낸 숲을 대신하려고 나무를 많이 심어 숲을 만드는 일이다. 그래프 이론가들은 나무를 베어서 숲을 만드는 다른 방법을 생각해 냈다. 트리는 개의 노드가 개의 간선으로 연결된 그래프다. 트리 에서 차수가 2 이상인 노드 , 즉 다른 노드 2개 이상과 직접 연결된 노드를 생각하자. 를 에서 제거하면 두 개 이상의 더 작은 트리가 분리되는데, 그래프 이론에서는 이를 숲이라고 부른다.
트리 의 노드 집합을 , 트리 의 노드 집합을 라 하자. 트리 와 가 동일하다는 것은 전단사 함수 가 존재해서, 의 모든 노드 쌍 에 대해 에서 와 가 간선으로 연결될 때 그리고 그때만 에서 와 가 간선으로 연결된다는 뜻이다. 이면 의 노드 는 의 노드 에 대응한다.
트리 의 노드 가 좋은 절단점이라는 것은, 를 에서 제거했을 때 두 개 이상의 분리된 트리가 생기고 그 트리들이 모두 서로 동일한 경우를 말한다.
주어진 트리 에 좋은 절단점이 있는지 판단하라. 있다면, 좋은 절단점 하나를 제거해서 얻을 수 있는 분리된 트리의 최대 개수를 구하라.
예를 들어 다음과 같은 13개 노드의 트리를 보자.

이 트리에는 좋은 절단점이 4번 노드 하나뿐이다. 4번 노드를 제거하면 동일한 트리 세 개가 생긴다. 그림에서 A, B, C로 표시한 트리는 각각 , , 의 노드로 이루어지며, 모두 선 모양(선 그래프)이다.
- A와 B 사이의 전단사 함수: , , , .
- A와 C 사이의 전단사 함수: , , , .
- B와 C 사이의 전단사 함수: , , , .
이 외에도 다른 전단사 함수가 존재한다.
입력
첫째 줄에 트리의 노드 개수 ()이 주어진다. 다음 개의 줄에는 트리의 간선 ()를 나타내는 정수 두 개 , 가 한 줄에 하나씩 주어진다. 주어진 트리에서는 임의의 두 노드가 간선들을 따라 서로 연결되어 있다.
출력
좋은 절단점 하나를 제거해서 얻을 수 있는 분리된 트리 개수의 최댓값을 한 줄에 출력한다. 좋은 절단점이 없다면 을 출력한다.