#L3597. 「CEOI2021」水井

「CEOI2021」水井

题目描述

美丽的韦莱比特山上有 NN 座山间小屋,恰好 N1N-1 对小屋被一条徒步行道连接,并且使用这些道路,可以从任意一间小屋到达任意另一间小屋。

小精灵 VilaVila 十分喜欢徒步旅行,通过连接两个小屋的一条道路恰好会花费她一天的时间。她可以使用魔法,让她某天开始在任一小屋处出现,然后花费剩下的 K1K-1 天进行徒步旅行,在旅行中她不会经过相同的小屋超过一次。因此在她的旅行中,VilaVila 恰好经过了 KK 间小屋。

VilaVila 在徒步旅行中会很渴,所以她希望一些小屋有水井。在她进行的任何可能的旅行中,她想要经过恰好一个有水井的小屋。

你的任务是确定是否可以找到小屋的一个子集放置水井,满足 VilaVila 这个奇怪的愿望。此外,你需要计算满足条件的子集数对 109+710^9+7 的值。

形式化地说,给定一棵 NN 个节点的树和一个正整数 KK,确定是否存在一个点集,满足任意树上恰好包含 KK 个点的路径上都恰好有一个点在这个点集中。此外,你需要求出这样的子集个数,对 109+710^9+7 取模。


输入格式
第一行包含两个整数 NNKK2KN2\le K\le N),意义如题目描述。

接下来 N1N-1 行描述徒步行道。第 ii 行包含两个空格隔开的整数 aia_ibib_i1ai,biN1\le a_i,b_i\le N),表示一条连接 aia_ibib_i 的徒步行道。

输入保证这些道路形成了一棵树。


输出格式
如果存在这样的满足 VilaVila 要求的小屋子集,第一行输出 YES,否则第一行输出 NO

第二行输出满足 VilaVila 要求的小屋子集个数,对 109+710^9+7 取模。


样例 1
输入

4 2
3 4
3 1
2 3

输出

YES
2

合法的小屋子集为 {3}\{3\}{1,2,4}\{1,2,4\}


样例 2
输入

8 3
7 3
1 3
7 8
5 1
4 6
7 2
3 6

输出

NO
0

样例 3
输入

6 5
4 1
4 2
3 6
5 2
4 6

输出

YES
10

只有一条长度为 55 的路径,这条路径包含点 3,6,4,2,53,6,4,2,5。在所求的子集中必需出现恰好一个这些节点,节点 11 在不在这个子集里没有差别。

因此,合法的小屋子集是 $\{3\},\{1,3\},\{6\},\{1,6\},\{4\},\{1,4\},\{2\},\{1,2\},\{5\},\{1,5\}$。


数据范围与提示

子任务编号 附加限制 分值
1 2KN2002\le K\le N\le 200 30
2 2KN1042\le K\le N\le 10^4 20
3 2KN5×1052\le K\le N\le 5\times 10^5
4 2KN1.5×1062\le K\le N\le 1.5\times 10^6 30

如果你的程序第一行输出正确,但是第二行没有输出正确答案,那么你会获得这部分测试点 60%60\% 的分数。

每个子任务的得分等于子任务中测试点的最低得分。