#P1103. 黑白树
黑白树
问题描述
面条老师捡到一颗黑白相间的树,这颗树有 个节点,其中 个节点是黑色的。
面条老师觉得,现在的树配色实在是杂乱无章,于是面条老师决定使用他祖传的剪刀来对这颗树进行修剪,面条老师可以选择一个边的集合 , 如果 , 那么就有 ,然后将这些边全部用祖传剪刀剪掉。可以预料到的是,树会分裂成 个小树。面条老师希望这 个小树都恰好有一个黑色节点。
面条老师在准备开始剪之前突然想到一个问题:有多少种不同的边的集合可以让修剪后的 个小树都恰好有一个黑色节点呢?
面条老师修剪树是一把好手,可是在思考问题上却遇到了很大的困难。你作为面条老师的好朋友,你能告诉他这个不同的边的集合的数量是多少么?
输入描述
第一行是一个正整数 ,表示面条老师捡到的树的顶点的数量。
第二行包含树的描述:个整数 , 代表一条连接 和 的边。
第三行是 个整数: ,当 时意味着节点 是白色的,当 时意味着节点 是黑色的。数据保证 的取值只会是 或
输出描述
输出仅一个整数,表示不同的边集的数目,这个数字可能会很大,所以你只需要告诉面条老师这个数字对 取模后的答案就可以了。
3
0 0
0 1 1
2
10
0 1 2 1 4 4 4 0 8
0 0 0 1 0 1 1 0 0 1
27
数据范围与约定
对于所有的数据,均满足
测试点编号 | 数据范围 | 特殊约束 |
---|---|---|
保证只有 个黑色节点 | ||
保证有个黑色节点 | ||