#loj5752. 「CCO 2026」Walking on a Graph
「CCO 2026」Walking on a Graph
#5752. 「CCO 2026」Walking on a Graph
标签: 传统 | 时间限制: 5000 ms | 内存限制: 512 MiB |
题目描述
译自 CCO 2026 Day2 T3「Walking on a Graph」。
有一个包含 个节点的图,节点编号从 到 。每个节点都被染成黑色或白色。已知节点 是黑色,节点 是白色。对于任何满足 的节点对,都存在一条从节点 到 的有向边,其颜色为红色或蓝色。边的颜色由以下逻辑确定:
- 若 且两个节点颜色相同,则边为红色。
- 若 且两个节点颜色不同,则边为蓝色。
- 若 且两个节点颜色相同,则边为蓝色。
- 若 且两个节点颜色不同,则边为红色。
LoBren 的初始最爱颜色是蓝色。随后他在图上进行行走(注意:行走允许重复经过顶点和边)。他在行走时遵循以下规则:
- 若他当前位于节点 ,他的最爱颜色变为蓝色。
- 否则,若他当前位于节点 ,他的最爱颜色变为红色。
- (若他位于其他节点,其最爱颜色保持不变。)
- 然后,他从当前节点出发,沿着一条与他当前最爱颜色相同的有向边移动。可以证明,这样的边一定存在。
- 最后,他可以自主选择是否重复上述过程。
通过按顺序记录他访问的节点,他得到了一个列表 。请计算满足以下条件的可能列表的数量,结果对 取模:
- 列表起始于节点 ,终止于节点 。
- 对于所有 ,节点 在列表中最多出现一次。
- 对于所有 ,满足 。
可以证明,满足此类条件的列表数量是有限的。
提示: 对应于大多数编程语言中的 运算符,表示除法后的余数。例如, 且 。
输入格式
第一行包含一个整数 。
第二行包含一个长度为 的字符串,由字符 B 和 W 组成。若第 个字符为 B,则节点 为黑色;否则为白色。保证节点 是黑色,节点 是白色。
输出格式
在一行中输出可能列表的数量,结果对 取模。
样例 1
输入
4
BWWB
输出
4
该图的结构如下:

实线代表蓝色边,虚线代表红色边。可能的路径为:




在带下划线的节点处,最爱颜色为红色,其余情况下为蓝色。
样例 2
输入
12
BWBWBBBWWBBW
输出
3377552
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 的范围 | 附加限制 |
|---|---|---|---|
| 无 | |||
| 恰好存在一个黑色节点 | |||
| 存在一个整数 ,使得区间 内的所有节点均为白色,其余节点均为黑色 | |||
| 最多存在 个黑色节点 | |||
| 无 |