#1489. 翘课
翘课
题目描述
神仙 bn 又想翘数学课了!
一天,bn 想通过藏在机房里面来避免要上数学课的悲惨命运,于是他来到了学校那雄伟的信息楼。
进入楼内,bn 面前出现了 个机房,不同的机房之间有一些道路把它们相连。不仅如此,bn 还发现了一个奇怪的规律:有一些机房两两之间总存在一条道路,却和其它机房没有任何道路相连。
bn 决定运用离散数学的知识来分析自己的逃跑路径。
简单来说,这 个机房可以看作一个有 个节点的简单无向图,图中存在 个联通块,第 个联通块的大小是 ;每一个独立的联通块都是一个完全图,即联通块内所有节点两两相连。为了逃跑方便,bn 想在图中新加入 条边,使得整张图联通。
bn 不想在“连边”(即修建新的道路)上花费太多的时间,因此他定义了某种连边方案 的价值函数 如下:
- 设该方案内, 个联通块向外连出的边数分别为 ,则 ,其中 表示连乘。
现在 bn 想知道,若给定机房对应的图,那么所有可行连边方案的价值之和是多少呢?
这下子 bn 不会了,他想问问你。
由于这个数很大,你只需要输出它对 取模之后的结果即可。
输入格式
为了减少输入量,我们规定第个联通块内的节点编号依次为 $\sum\limits_{j=1}^{i-1}s_j+1,\sum\limits_{j=1}^{i-1}s_j+2,…,\sum\limits_{j=1}^{i-1}s_j+s_i$ ,因此不再输入每个联通块内的节点编号。
第一行两个整数 ,表示机房的数量和联通块数;
第二行k个整数 ,表示每个联通块的大小。
输出格式
一行一个正整数,表示所有可行连边方案的价值之和,答案对 取模。
样例 1
3 2
2 1
2
连边方案共有两种,即连 或连 。两种方案的价值均为 ,因此输出 。
5 3
3 1 1
30
可以证明可行的连边方案共有 种,价值均为 ,因此输出 。
4 4
1 1 1 1
72
可以证明可行的连边方案共有 种,其中价值为 的有 种,价值为 的有 种,因此输出 。
数据范围与提示
数据规模
对于 的数据,保证 ;
另有 的数据,保证 ;
对于 的数据,保证 ;
对于 的数据,保证 ;
另有 的数据,保证所有的 均为 ;
对于 的数据,保证 且 ,图中无重边和自环。