#P2406. Progress Monitoring
Progress Monitoring
题目描述
编程老师 Dmitry Olegovich(以下简称小 D)准备在一次考试中出以下题目: 以邻接矩阵的方式给定一棵树,求下面这段伪代码的输出结果。
used[1 ... n] = {0, ..., 0};
procedure dfs(v):
print v;
used[v] = 1;
for i = 1, 2, ..., n:
if (a[v][i] == 1 and used[i] == 0):
dfs(i);
dfs(1);
为了简化测试结果的检查过程 (其实就是懒) ,小 D 决定创建一棵树 ,使得结果是他最喜欢的序列 。不过,小 D 不想为学生用相同的树作为输入(这意味着他们可能会作弊)。所以小 D 试图找出不同的树 的数量,以便以 作为输入运行上述伪代码的结果恰好是序列 ,答案对 取模。
(两棵树不同的定义:它们的邻接矩阵不相同)
输入格式
第一行一个整数 ,代表题目中序列 的长度,。
第二行 个整数,表示序列 (题目确保这是一个的排列,而且 )。
输出格式
一行一个整数表示答案,意思如题面所述。
3
1 2 3
2
3
1 3 2
1