만드는 중입니다

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

우물

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

요약
트리 모양의 N개 쉼터에서 정확히 K개 쉼터를 지나는 모든 경로에 우물이 정확히 하나씩 있도록 하는 쉼터 부분집합의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
트리, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

아름다운 벨레빗 산에 쉘터가 NN개 있다. 쉘터 중 정확히 N−1N - 1쌍이 등산로로 연결되어 있고, 이 등산로들을 따라 임의의 두 쉘터 사이를 이동할 수 있다.

요정 빌라는 등산을 아주 좋아한다. 두 쉘터를 잇는 등산로 하나를 지나는 데 정확히 하루가 걸린다. 빌라는 마법을 써서 하루의 시작에 아무 쉘터에나 나타날 수 있고, 그 뒤 K−1K - 1일 동안 같은 쉘터를 두 번 들르지 않고 등산한다. 따라서 한 번의 등산에서 빌라는 정확히 KK개의 쉘터를 방문한다.

빌라는 등산 중에 목이 마르므로, 일부 쉘터에 우물이 있기를 원한다. 빌라가 하는 등산 중 어떤 경우에도, 우물이 있는 쉘터를 정확히 하나만 방문하기를 원한다.

빌라의 조건을 만족하도록 우물을 설치할 수 있는 쉘터의 부분집합이 있는지 판단하라. 있다면 그러한 부분집합의 개수를 109+710^9 + 7로 나눈 나머지를 구하라.

입력

첫 줄에 두 정수 NN과 KK (2≤K≤N2 \le K \le N)가 주어진다.

다음 N−1N - 1개의 줄에는 각각 등산로를 나타내는 두 정수 aia_i, bib_i (1≤ai,bi≤N1 \le a_i, b_i \le N)가 주어지며, 이는 쉘터 aia_i와 bib_i 사이의 등산로이다.

주어지는 등산로들은 트리를 이룬다.

출력

빌라의 조건을 만족하는 쉘터 부분집합이 존재하면 첫 줄에 YES를, 존재하지 않으면 NO를 출력한다.

둘째 줄에는 그러한 부분집합의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

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

    입력
    8 3
    7 3
    1 3
    7 8
    5 1
    4 6
    7 2
    3 6
    
    예상 출력
    NO
    0
    
  3. 예제 3

    입력
    6 5
    4 1
    4 2
    3 6
    5 2
    4 6
    
    예상 출력
    YES
    10