UOJ Logo Universal Online Judge

UOJ

#816. 【NOI2023】桂花树

附件下载 统计

小 B 八年前看到的桂花树是一棵 n 个节点的树 T保证 T 的非根结点的父亲的编号小于自己。给定整数 k,称一棵 (n+m) 个节点的有根树 T 是繁荣的,当且仅当以下所有条件满足:

  1. 对于任意满足 1i,jn(i,j),在树 T 和树 T 上,节点 ij 的最近公共祖先编号相同。
  2. 对于任意满足 1i,jn+m(i,j),在树 T 上,节点 ij 的最近公共祖先编号不超过 max(i,j)+k

注意题目中所有树的节点均从 1 开始编号,且根结点编号为 1T 不需要满足非根结点的父亲编号小于自己。

小 B 想知道有多少棵 (n+m) 个节点的树是繁荣的,认为两棵树不同当且仅当存在某一个节点在两棵树上的父亲不同。你只输出方案数在模 (109+7) 意义下的值。

输入格式

本题有多组测试数据。

输入的第一行包含两个整数 c,t,分别表示测试点编号和测试数据组数。c=0 表示该测试点为样例。

接下来依次输入每组测试数据,对于每组测试数据:

输入的第一行包含三个整数 n,m,k

输入的第二行包含 n1 个整数 f2,f2,,fn,其中 fi 表示 T 中节点 i 的父亲节点编号。

输出格式

对于每组测试数据输出一行一个整数,表示繁荣的树的数量在模 (109+7) 意义下的答案。

样例 #1

input

0 3
1 2 1

2 2 1
1
2 2 0
1

output

3
16
15

explanation

对于样例中的第一组测试数据,有三棵合法的树,其每个节点的的父亲构成的序列 {f2,f3} 分别为 {1,1}{3,1}{1,2}。注意这组测试数据的第二行为空行。

对于样例中的第二组、第三组测试数据,共有 16 棵树满足第一个条件,其中只有父亲序列为 {4,4,1} 的树在第三组测试数据中不满足第二个条件。

样例二

见附件下载。

该组样例满足 n100,五组测试数据中 m 分别不超过 0,1,1,2,2

样例三

见附件下载。

该组样例满足 k=0,五组测试数据中前两组测试数据满足 n=1,第一、三、四组测试数据满足 n,m100

样例四

见附件下载。

该组样例前两组测试数据满足 n=1,第一、三、四组测试数据满足 n,m100

数据范围

对于所有测试数据保证:1t151n3×1040m30000k101fii1

测试点编号 n m k
1,2 4 4 10
3 3×104 0
4 102 1
5 3×104
6 102 2
7 3×104
8,9 1 102 0
10 3,000
11 102 10
12 3,000
13,14 102 102 0
15,16 3×104 3,000
17,18 102 102 10
19,20 3×104 3,000

时间限制:0.5s1s

空间限制:512MB