나무 위 망대
시간 제한5초메모리 제한512 MB
트리에서 선택한 모든 꼭짓점이 다른 선택 꼭짓점과 인접하도록 K개의 꼭짓점을 고르는 경우의 수를 1000000007로 나눈 나머지를 구한다.
문제
망대는 나무에 매달아 놓은 높은 나무 발판이다. 사냥꾼은 망대에 올라가 사냥감을 살피거나 사냥한다.
이 지방 사냥꾼들은 망대 개를 좁고 곧은 길로 이어 놓았다. 숲을 덜 훼손하려고, 어느 두 망대 사이든 오갈 수 있게 하는 최소 개수의 길만 냈다. 두 망대는 길로 직접 이어져 있을 때만 서로 보인다.
사냥꾼 명으로 이루어진 무리는 날마다 서로 다른 망대 조합에 올라가 야생 동물을 관찰한다. 조건은 다음과 같다.
- 안전 규정에 따라, 사람이 올라간 망대는 사람이 올라간 다른 망대에서 반드시 보여야 한다. 사고가 나면 옆 망대의 사냥꾼이 도우러 갈 수 있어야 하기 때문이다.
- 망대 하나에 올라가는 사냥꾼은 많아야 한 명이다.
- 누가 어느 망대에 있는지는 상관없다. 어느 망대가 쓰였는지만 구분한다.
- 무리의 인원수는 바뀌지 않는다.
이 무리가 가능한 망대 조합을 모두 시험해 보려면 며칠이 걸리는지 구하여라.
입력
입력은 여러 개의 테스트 케이스로 이루어지며, 입력의 끝까지 이어진다.
각 테스트 케이스의 첫 줄에 정수 과 가 공백으로 구분되어 주어진다 (). 은 망대의 개수, 는 무리의 인원수이다. 망대에는 번부터 번까지 번호가 붙어 있다.
이어지는 개의 줄에 길이 한 개씩 주어진다. 각 줄에는 그 길이 잇는 두 망대의 번호가 공백으로 구분되어 주어진다. 한 줄 안의 두 번호 순서와 길이 주어지는 순서는 정해져 있지 않다.
출력
각 테스트 케이스마다 무리가 망대에서 보내게 되는 날수를 한 줄에 하나씩 출력한다. 답은 로 나눈 나머지로 출력한다.