만드는 중입니다

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

부분트리

시간 제한2초메모리 제한1024 MB

요약
정점이 n개인 트리에서 k가 1부터 n까지일 때, 정점을 공유하지 않는 부분트리 k개를 고르는 방법의 수를 10^9로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 트리, 조합론
정답자
아직 제출이 없습니다

문제

트리는 사이클이 없는 연결된 무방향 그래프이다. 트리 TT의 부분트리는 TT의 연결된 부분 그래프이다.

부분트리의 개수는 트리의 구조에 따라 달라진다. 예를 들어 정점이 nn개인 경로 모양 트리에는 부분트리가 n(n+1)/2n(n+1)/2개 있고, 별 모양 트리(중심 정점 하나에 나머지 n−1n-1개 정점이 연결된 트리)에는 2n−1+n−12^{n-1}+n-1개 있다.

정점을 공유하지 않는 부분트리 두 개, 세 개를 고르는 방법의 수도 트리 구조에 따라 달라진다.

구조와 관계없이, n−1n-1개의 정점 비공유 부분트리를 고르는 방법은 2n−12n-1가지이고, nn개의 정점 비공유 부분트리를 고르는 방법은 1가지이다(정점 nn개를 각각 고르는 경우).

정점이 nn개인 트리가 주어지면, kk를 1부터 nn까지 바꿔 가며 정점을 공유하지 않는 부분트리 kk개를 고르는 방법의 수를 각각 구하라.

입력

첫 줄에 nn(2≤n≤1002 \le n \le 100)이 주어진다. 다음 n−1n-1개 줄에는 트리의 간선이 주어진다.

출력

정수 nn개를 출력한다. 각 수는 10910^9로 나눈 나머지이다.

예제2

  1. 예제 1

    입력
    5
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    15
    35
    28
    9
    1
    
  2. 예제 2

    입력
    5
    1 2
    1 3
    1 4
    1 5
    
    예상 출력
    20
    38
    28
    9
    1