라면 배달하기
시간 제한1초메모리 제한1024 MB
1번 방을 루트로 하는 트리에서 K개 방을 고르는 모든 경우에 대해, 1번 방에서 출발해 그 방들을 모두 방문하는 최소 시간의 합을 10^9+7로 나눈 나머지로 구합니다.
문제
서울과학고의 기숙사는 개의 방과 서로 다른 두 방을 연결하는 개의 복도로 이루어진 트리 형태로 표현할 수 있다. 모든 복도는 양방향으로 이동할 수 있고, 복도를 이용해 모든 방 사이를 이동할 수 있다. 복도 하나를 통과하는 데 걸리는 시간은 이다.
민규는 명의 친구에게 컵라면을 끓여주려고 한다. 현재 민규는 번 방에 있으며, 민규를 포함한 모든 친구는 서로 다른 방에 있다.
이를 위해 민규는 모든 친구에게 뜨거운 물을 전달할 것이다. 뜨거운 물은 번 방의 정수기에서만 얻을 수 있다. 민규는 매우 큰 보온병을 가지고 있어, 물을 한 번만 받아도 모든 친구에게 줄 만큼 충분한 양을 받을 수 있다.
컵라면을 끓이는 행동은 위험하다. 사감 선생님께 걸리면 벌점을 받을 수 있기 때문이다. 민규는 위험을 최대한 줄이려고, 가장 마지막으로 뜨거운 물을 배달한 시각이 최대한 빨라지도록 개의 방을 방문할 것이다.
민규가 개의 방을 방문하는 방법은 다음과 같다.
- 민규는 물을 받기 전에 명의 친구가 있는 방을 미리 확인한다.
- 민규는 시각 에 번 방에서 물을 받고 출발한다. 가장 마지막으로 뜨거운 물을 받는 친구가 물을 받는 시각을 최소화하는 방법으로 개의 방을 방문한다.
- 시간은 민규가 복도를 이동하는 시간만 고려한다. 친구에게 물을 주는 시간과 정수기에서 물을 뜨는 시간은 무시한다. 민규가 물을 다 주고 자신의 방으로 돌아가는 시간도 무시한다.
민규는 친구가 있는 방을 확인하기 전에 물을 배달하는 데 걸리는 시간을 예측하려고 한다. 명의 친구가 있는 방을 고르는 가지 경우마다, 마지막으로 물을 배달하는 시각을 구해 모두 더하자.
입력
첫째 줄에 방의 수 과 친구의 수 가 공백으로 구분되어 주어진다.
둘째 줄부터 번째 줄까지 번째 줄에는 번 복도가 연결하는 두 방의 번호 와 가 공백으로 구분되어 주어진다.
출력
명의 친구가 있는 방을 고르는 가지 경우에 대해 마지막으로 물을 배달하는 시각의 합을 로 나눈 나머지를 출력한다.
제한
- 입력으로 주어지는 서울과학고의 구조는 트리임이 보장된다.