우물
시간 제한10초메모리 제한1024 MB
트리 모양의 N개 쉼터에서 정확히 K개 쉼터를 지나는 모든 경로에 우물이 정확히 하나씩 있도록 하는 쉼터 부분집합의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
아름다운 벨레빗 산에 쉘터가 개 있다. 쉘터 중 정확히 쌍이 등산로로 연결되어 있고, 이 등산로들을 따라 임의의 두 쉘터 사이를 이동할 수 있다.
요정 빌라는 등산을 아주 좋아한다. 두 쉘터를 잇는 등산로 하나를 지나는 데 정확히 하루가 걸린다. 빌라는 마법을 써서 하루의 시작에 아무 쉘터에나 나타날 수 있고, 그 뒤 일 동안 같은 쉘터를 두 번 들르지 않고 등산한다. 따라서 한 번의 등산에서 빌라는 정확히 개의 쉘터를 방문한다.
빌라는 등산 중에 목이 마르므로, 일부 쉘터에 우물이 있기를 원한다. 빌라가 하는 등산 중 어떤 경우에도, 우물이 있는 쉘터를 정확히 하나만 방문하기를 원한다.
빌라의 조건을 만족하도록 우물을 설치할 수 있는 쉘터의 부분집합이 있는지 판단하라. 있다면 그러한 부분집합의 개수를 로 나눈 나머지를 구하라.
입력
첫 줄에 두 정수 과 ()가 주어진다.
다음 개의 줄에는 각각 등산로를 나타내는 두 정수 , ()가 주어지며, 이는 쉘터 와 사이의 등산로이다.
주어지는 등산로들은 트리를 이룬다.
출력
빌라의 조건을 만족하는 쉘터 부분집합이 존재하면 첫 줄에 YES를, 존재하지 않으면 NO를 출력한다.
둘째 줄에는 그러한 부분집합의 개수를 로 나눈 나머지를 출력한다.