#P1056. 图游走(walk)
图游走(walk)
walk
题目描述
有一个包含 个节点的图,节点编号为 。每个节点被染成黑色或白色,其中节点 为黑色,节点 为白色。
对于任意两个不同的节点 ,都有一条从节点 到节点 的有向边。边的颜色按以下规则确定:
- 如果 且两个节点颜色相同,则边为红色;
- 如果 且两个节点颜色不同,则边为蓝色;
- 如果 且两个节点颜色相同,则边为蓝色;
- 如果 且两个节点颜色不同,则边为红色。
LoBren 最喜欢的颜色初始为蓝色。他按照以下规则在图上行走,行走过程中可以重复经过节点和边:
- 如果当前位于节点 ,他最喜欢的颜色变为蓝色;否则,如果当前位于节点 ,他最喜欢的颜色变为红色。
- 从当前节点出发,沿一条颜色与他最喜欢的颜色相同的出边移动。可以证明,这样的边一定存在。
- 他可以选择继续重复以上过程,也可以停止。
按照访问顺序记录节点,得到列表 。求满足以下条件的列表数量,答案对 取模:
- 列表以节点 开始,以节点 结束;
- 对于所有 ,节点 在列表中至多出现一次;
- 对于所有 ,均有 。
可以证明,满足条件的列表数量是有限的。
输入格式
第一行包含一个整数 。
第二行包含一个长度为 、仅由字符 B 和 W 组成的字符串。第 个字符为 B 表示节点 为黑色,为 W 表示节点 为白色。
保证字符串的第一个字符为 B,第二个字符为 W。
输出格式
输出一行,表示满足条件的列表数量对 取模后的结果。
输入输出样例 #1
输入 #1
4
BWWB
输出 #1
4
说明 #1
四个满足条件的列表为:
- ;
- ;
- ;
- 。
输入输出样例 #2
输入 #2
12
BWBWBBBWWBBW
输出 #2
3377552
数据范围
- ;
- 输入字符串的第一个字符为
B,第二个字符为W。
子任务
| 子任务 | 的范围 | 附加限制 | 分值 |
|---|---|---|---|
| 1 | 无 | ||
| 2 | |||
| 3 | 恰好有一个黑色节点 | ||
| 4 | 存在 ,使得 中的节点均为白色,其余节点均为黑色 | ||
| 5 | 最多有 个黑色节点 | ||
| 6 | 无 |