#arc121f. [arc121_f]Logical Operations on Tree
[arc121_f]Logical Operations on Tree
题目描述
给定一个有个顶点编号为到的树。
第条边连接着顶点和。
Snack将每个顶点标记为0
或1
,每条边标记为AND
或OR
。在种标记顶点和边的方式中,找到满足以下条件的方式数量,结果对取模:
条件:存在一系列次操作,以顶点标记为1
结束,其中每个操作由以下步骤组成:
- 选择一条边并收缩它。在这里,令和为被抹去顶点的标记,为被抹去边的标记。
- 如果是
AND
,那么用标记新的顶点;如果是OR
,那么用标记新的顶点。
说明
- 操作的定义如下:$\\mathrm{AND}(0,0)=(0,1)=(1,0)=0,\\mathrm{AND}(1,1)=1$。
- 操作的定义如下:$\\mathrm{OR}(1,1)=(0,1)=(1,0)=1,\\mathrm{OR}(0,0)=0$。
- 在收缩连接顶点和的边时,我们合并这两个顶点,并移除该边。在收缩后,如果在收缩之前存在连接和或连接和的边,那么现在新的顶点和顶点之间就有一条边。
约束条件
- 输入中的所有值都是整数。
- 给定的图是一棵树。
输入
从标准输入读入数据,格式如下:
输出
打印满足题目描述中条件的标记树的方式数量,结果对取模。
示例输入 1
2
1 2
示例输出 1
4
示例输入 2
20
7 3
20 18
16 12
7 2
10 5
18 16
16 3
4 11
7 15
8 1
6 1
12 13
15 5
19 17
7 1
9 8
7 17
16 14
11 7
示例输出 2
283374562
- 注意将结果对 取模。