만드는 중입니다

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

나누어떨어지는 트리

시간 제한5초메모리 제한2048 MB

요약
주어진 트리 T를 같은 트리 A의 복사본 k개와 새 간선 k-1개로 만들 수 있는 서로 다른 트리 A의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
트리, 정수론, 해시맵
정답자
아직 제출이 없습니다

문제

무방향 트리 AA와 BB가 주어진다. 합 A+BA + B는 AA의 정점 하나와 BB의 정점 하나를 간선 하나로 이어서 얻을 수 있는 모든 무방향 트리의 집합이다.

마찬가지로 스칼라 kk와 트리 AA의 곱은 AA의 복사본 kk개를 새 간선 k−1k - 1개로 이어 만든 트리들의 집합이다. 예를 들어 1⋅A1 \cdot A는 트리 AA만 담긴 집합이다. 2⋅A2 \cdot A는 A+AA + A와 같다. 3⋅A3 \cdot A는 AA의 복사본 3개를 간선 2개로 이어 하나의 트리로 만든 모든 트리를 담는다.

트리 AA가 트리 BB를 나눈다는 것은 BB가 k⋅Ak \cdot A에 포함되는 양의 정수 kk가 존재한다는 뜻이다. 자연수와 마찬가지로 모든 트리는 자기 자신과 정점 하나짜리 단위 트리로 나누어떨어진다.

두 트리는 한 트리의 정점 번호를 바꿔서 다른 트리를 얻을 수 없으면 서로 다른 트리로 본다. 트리 TT가 주어졌을 때, TT를 나누는 서로 다른 트리의 개수를 구하시오.

입력

첫째 줄에 트리의 정점 개수 nn (1≤n≤1051 \leq n \leq 10^5)이 주어진다.

다음 n−1n - 1개의 줄에는 트리의 간선 양 끝점 uu, vv (1≤u,v≤n1 \leq u, v \leq n)가 한 줄에 하나씩 주어진다.

출력

TT를 나누는 서로 다른 트리의 개수를 정수 하나로 출력한다.

예제1

  1. 예제 1

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