라면 배달하기

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

요약
트리에서 1번 방에서 출발해 K명의 친구에게 물을 배달할 때 마지막 배달 시각의 최솟값을, 모든 방 선택 경우에 대해 합산한다.
난이도

어려움10점 중 8점

유형
트리, 조합론, DFS, 그리디
정답자
아직 제출이 없습니다

문제

서울과학고의 기숙사는 NN개의 방과 서로 다른 두 방을 연결하는 N−1N-1개의 복도로 이루어진 트리 형태로 표현할 수 있다. 모든 복도는 양방향으로 이동할 수 있고, 복도를 이용해 모든 방 사이를 이동할 수 있다. 하나의 복도를 통과하는 데 걸리는 시간은 11이다.

민규는 KK명의 친구에게 컵라면을 끓여주려고 한다. 현재 민규는 11번 방에 있으며, 민규를 포함한 모든 친구들은 서로 다른 방에 있다.

이를 위해 민규는 모든 친구들에게 뜨거운 물을 전달할 것이다. 뜨거운 물은 민규가 있는 11번 방의 정수기에서만 얻을 수 있다. 또한, 민규는 매우 큰 보온병을 가지고 있어 물을 한 번만 받아도 모든 친구에게 줄 수 있는 충분한 양의 물을 받을 수 있다.

라면을 끓이는 행동은 위험한 행동이다. 사감 선생님께 걸리면 벌점을 받을 수 있기 때문이다. 민규는 위험을 최대한 줄이기 위해 가장 마지막으로 뜨거운 물을 배달한 시각이 최대한 빠른 방법으로 KK개의 방을 방문할 것이다.

민규가 KK개의 방을 방문하는 방법을 더 자세히 설명하면 다음과 같다.

  • 민규는 물을 받기 전, KK명의 친구들이 있는 방을 미리 확인한다.
  • 민규는 시각 00에 11번 방에서 물을 받고 출발해, 가장 마지막으로 뜨거운 물을 배달하는 친구에게 걸리는 시간을 최소화하는 방법으로 KK개의 방을 방문할 것이다.
  • 시간을 계산할 때는 민규가 복도를 이동하는 시간만 고려한다. 친구에게 물을 주는 시간이나 정수기에서 물을 뜨는 시간 등은 무시한다. 민규가 물을 다 주고 자신의 방으로 돌아가는 시간 역시 무시한다.

민규는 친구들이 있는 방을 확인하기 전에, 친구들에게 물을 배달하는 데 시간이 얼마나 걸릴지 예측하려고 한다. KK명의 친구들이 있는 방을 고르는 (N−1K)\binom{N-1}{K}가지 경우에 대해, 마지막으로 물을 배달하는 시각의 합을 구해 주자.

입력

첫째 줄에 방의 수 NN과 친구의 수 KK가 공백으로 구분되어 주어진다.

둘째 줄부터 NN번째 줄까지 i+1i+1번째 줄에는 ii번 복도가 연결하는 두 방의 번호 U_iU\_i와 V_iV\_i가 공백으로 구분되어 주어진다.

출력

친구들이 있는 방을 고르는 (N−1K)\binom{N-1}{K}가지 경우에 대해 마지막으로 물을 배달하는 시각의 합을 109+710^9 + 7으로 나눈 나머지를 출력하여라.

제한

  • 2≤N≤1052\le N\le 10^5
  • 1≤K≤N−11\le K\le N-1
  • 1≤U_i≤N1\le U\_i\le N (1≤i\<N)(1\le i\<N)
  • 1≤V_i≤N1\le V\_i\le N (1≤i\<N)(1\le i\<N)
  • U_i≠V_iU\_i\ne V\_i (1≤i\<N)(1\le i\<N)
  • 입력으로 주어지는 서울과학고의 구조는 트리임이 보장된다.

예제3

  1. 예제 1

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

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

    입력
    10 5
    1 2
    2 3
    2 4
    4 5
    4 6
    5 7
    1 8
    8 9
    8 10
    
    예상 출력
    1210