#P12320. [蓝桥杯 2024 国研究生组] 深度优先搜索
[蓝桥杯 2024 国研究生组] 深度优先搜索
题目描述
小蓝正在学习深度优先搜索。给出一段小蓝写的代码
void dfs(int rt, int deep, int fa) {
a[++cnt] = deep;
for (int i = head[rt]; i; i = e[i].next)
if (e[i].to != fa) dfs(e[i].to, deep + 1, rt);
}
对一个有根树执行 dfs(root, 0, 0)
可以生成一个长度为树中结点个数的序列,依次表示对遍历的所有结点的深度,小蓝认为假如一个序列能够通过对一个有根树执行 dfs
得到,这个序列就是合法的。现在小蓝有一个只包含 和非负整数的序列,小蓝想要知道,有多少种把 替换成任意非负整数的方案,使得该序列合法。
输入格式
输入的第一行包含一个正整数 表示序列长度。
第二行包含 个非负整数或 ,相邻整数之间使用一个空格分隔,表示序列中的数 。
输出格式
输出一行包含一个整数,表示答案除以 的余数。
2
1 -1
0
4
0 1 -1 1
2
提示
样例说明
对于样例 ,两个合法的序列是 和 。
评测用例规模与约定
- 对于 的评测用例,保证序列中不会出现两个连续的 ,即若 ,则 。
- 对于 的评测用例,;
- 对于所有评测用例,,。