Поддеревья

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

요약
주어진 트리에서 꼭짓점이 겹치지 않는 연결 부분그래프 k개를 고르는 방법의 수를 k=1부터 n까지 각각 10^9로 나눈 나머지로 구한다.
난이도

어려움10점 중 8점

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

문제

Дерево --- это связный неориентированный граф без циклов. Поддеревом дерева TT называется его связный подграф.

В зависимости от структуры дерева у него может быть несколько поддеревьев. Например, у дерева-цепочки из nn вершин n(n+1)/2n(n+1)/2 поддеревьев, а у дерева-звезды (n−1n-1 вершина связаны с одной центральной) количество поддеревьев равно 2n−1+n−12^{n-1}+n-1.

Аналогично может быть различное количество способов выделить в дереве два непересекающихся по вершинам поддерева, три непересекающихся поддерева, и т. д.

Наконец, вне зависимости от структуры дерева есть 2n−12n - 1 способ выбрать n−1n - 1 непересекающееся поддерево и ровно один способ выбрать nn непересекающихся поддеревьев (просто nn изолированных вершин).

По заданному дереву с nn вершинами выведите для каждого kk от 1 до nn количество способов выбрать kk непересекающихся по вершинам поддеревьев данного дерева.

입력

Первая строка входного файла содержит nn (2≤n≤1002 \le n \le 100). Следующие n−1n-1 строка описывают ребра дерева.

출력

Выведите nn целых чисел: для каждого kk от 1 до nn выведите количество способов выбрать kk непересекающихся по вершинам поддеревьев заданного дерева. Выводите каждое число по модулю 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