루트 있는 트리에서 각 노드의 서브트리별 깊이 분포를 비교해, 그 분포가 같은 서브트리 쌍의 개수를 구한다.
보통7트리DFS해시맵정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB루트가 있는 트리에서 노드의 깊이는 다음 규칙을 재귀적으로 적용해서 정한다.
S(T,d)를 트리 T에서 깊이가 d인 노드의 개수라고 하자. 루트가 있는 두 트리 T와 T′는 모든 음이 아닌 정수 d에 대해 S(T,d)=S(T′,d)일 때, 그리고 그때에만 유사하다고 한다.
노드가 N개인 루트 있는 트리 T가 주어진다. 노드에는 1부터 N까지 번호가 붙어 있고, 노드 1이 T의 루트이다. Ti를 노드 i를 루트로 하는 T의 서브트리라고 하자. Ti와 Tj가 유사하고 i<j인 쌍 (i,j)의 개수를 구하는 프로그램을 작성하시오.
입력은 테스트 케이스 하나로 이루어진다.
N
a1 b1
...
aN-1 bN-1
첫째 줄에 트리의 노드 개수 N (1≤N≤100,000)이 주어진다. 다음 N−1개의 줄에는 간선 정보가 주어진다. 그중 i번째 줄에는 ai와 bi가 주어지며, 이는 노드 ai가 노드 bi의 부모라는 뜻이다. (1≤ai,bi≤N, ai=bi) 루트 노드의 번호는 1이다. 주어지는 그래프는 루트가 있는 트리임이 보장된다. 즉, 노드 1을 제외한 모든 노드에는 부모가 정확히 하나씩 있고, 그래프는 연결되어 있다.
노드 x를 루트로 하는 서브트리와 노드 y를 루트로 하는 서브트리가 유사하고 x<y인 노드 쌍 (x,y)의 개수를 출력한다.