题目背景
一个风和日丽的早晨,小 带着他的好朋友小 在小树林里面数树。
看着满树林的树,小 灵感一闪,想到了一道题目。
题目描述
现在有 个点,每个点有一个权值 。
小 想要小 从中选一些点组成一个集合,设集合 。
当然,小 还需要保证这些点能形成一颗树,且 的度数为 。(节点的度数:与它相邻的节点的个数)
小 想问小 有多少种满足条件的方案。
小 深知自己肯定不会这道题目,所以他就拿来问你了。
由于方案数可能很大,所以请对 取模。
输入格式
第一行,一个整数 。
第二行, 个整数
输出格式
一行一个整数,表示方案数。
输入输出样例 #1
输入 #1
输出 #1
输入输出样例 #2
输入 #2
输出 #2
输入输出样例 #3
输入 #3
输出 #3
输入输出样例 #4
输入 #4
1 2
| 50 8 1 10 2 2 1 2 1 1 2 5 1 11 6 13 13 10 4 1 13 11 2 2 11 13 10 1 1 4 3 4 2 15 2 2 1 1 2 1 7 14 2 2 4 13 2 7 5 6 10
|
输出 #4
说明/提示
样例说明

数据范围与约定
本题使用捆绑测试。
Subtask 编号 |
|
特殊性质 |
得分 |
|
|
无 |
|
|
|
无 |
|
|
|
无 |
|
|
|
无 |
|
|
|
无 |
|
|
|
|
|
|
|
数据随机 |
|
|
|
无 |
|
对于 的数据,,。
中“数据随机”指:对于所有 , 的概率为 1, 的概率为 中等概率选择一个数。
对于前 个 ,时间限制 。
对于第 个 ,时间限制 。
对于后 个 ,时间限制 。
对于所有测试点,空间限制 。
题解
一个集合 能组成树的充要条件是 ,变形得到 。则问题转化为求 之和为 的子集数。
构造生成函数
则答案为 ,即 中 项的系数。
其中 。
总时间复杂度为 。