아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

트리나라

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

요약
트리에서 K개의 정점을 골라 하나의 연결된 부분트리를 이루는 경우의 수를 1,000,000,007로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

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

문제

트리나라는 도시 NN개로 이루어져 있고, 각 도시에는 1번부터 NN번까지 번호가 붙어 있다. 트리나라의 도로망은 트리를 이룬다. 즉 양방향 도로가 N−1N-1개 있고 모든 도시가 연결되어 있어서, 어느 두 도시 사이든 항상 오갈 수 있다.

한 회사의 직원 KK명이 트리나라로 이사한다. 직원은 모두 서로 다른 도시에 살아야 하므로 이사할 도시 KK개를 골라야 한다. 여기에 조건이 하나 붙는다. 직원이 사는 도시는 서로 연결되어 있어야 한다. 즉 두 직원이 사는 도시가 ii와 jj라면, ii와 jj를 잇는 경로 위의 도시에도 직원이 살아야 한다.

트리나라의 트리 구조가 주어지면 이사할 도시 KK개를 고르는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 수 NN과 직원의 수 KK가 공백을 사이에 두고 주어진다. (2≤N≤502 \le N \le 50, 1≤K≤N1 \le K \le N)

둘째 줄부터 N−1N-1개의 줄에 도로 정보가 한 줄에 하나씩 주어진다. 각 줄에는 그 도로가 잇는 두 도시의 번호 uu와 vv가 주어진다. (1≤u,v≤N1 \le u, v \le N, u≠vu \ne v) 주어지는 도로 N−1N-1개는 트리를 이룬다.

출력

첫째 줄에 도시 KK개를 고르는 방법의 수를 1,000,000,007로 나눈 나머지를 출력한다.

예제5

  1. 예제 1

    입력
    4 2
    1 2
    2 3
    3 4
    
    예상 출력
    3
    
  2. 예제 2

    입력
    5 3
    1 2
    1 3
    1 4
    1 5
    
    예상 출력
    6
    
  3. 예제 3

    입력
    5 3
    1 2
    2 3
    3 4
    4 5
    
    예상 출력
    3
    
  4. 예제 4

    입력
    6 3
    1 2
    2 3
    2 4
    4 5
    4 6
    
    예상 출력
    6
    
  5. 예제 5

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