트리나라

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

보통6동적 계획법트리DFS조합론아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

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

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

입력

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

둘째 줄부터 N1N-1개의 줄에 도로 정보가 한 줄에 하나씩 주어진다. 각 줄에는 그 도로가 잇는 두 도시의 번호 uuvv가 주어진다. (1u,vN1 \le u, v \le N, uvu \ne v) 주어지는 도로 N1N-1개는 트리를 이룬다.

출력

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