만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

라면 배달하기

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

요약
1번 방을 루트로 하는 트리에서 K개 방을 고르는 모든 경우에 대해, 1번 방에서 출발해 그 방들을 모두 방문하는 최소 시간의 합을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
트리, 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번 복도가 연결하는 두 방의 번호 UiU_i와 ViV_i가 공백으로 구분되어 주어진다.

출력

KK명의 친구가 있는 방을 고르는 (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≤Ui≤N1 \le U_i \le N (1≤i<N)(1 \le i < N)
  • 1≤Vi≤N1 \le V_i \le N (1≤i<N)(1 \le i < N)
  • Ui≠ViU_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