A116453.古老典籍(ancient)
普及+/提高
通过率:0%
时间限制:3.00s
内存限制:1024MB
题目描述
在浩瀚的星空之下,有一座古老的智慧神殿,殿中藏有一棵名为“真理之树”的圣物。这棵树共有 n 个节点,编号为 1∼n,其中节点 1 为根,每个节点都记载着一卷古老的典籍。
传说中,只有按照某种特定的从根节点 1 开始的深度优先搜索(DFS)顺序阅读学习这些典籍,才能领悟其中的终极智慧。然而,守护神殿的贤者们留下了一条禁忌规则:对于给定的 q 对典籍 (a,b),在阅读顺序中,节点 a 的典籍必须出现在节点 b 典籍之前。
现在,你作为新一代的贤者继承者,需要计算:在遵守所有禁忌规则的前提下,一共有多少种不同的阅读顺序?
由于答案可能非常巨大,你需要输出它对 109+7 取模的结果。
输入格式
输入的第一行 t,表示测试数据的组数。
对于每组测试数据内:
输入的第一行包含三个正整数 n,q,分别表示树的节点数,以及规则的数量。
接下来 n 行,其中第 i 行的第一个数字 ci 表示节点 i 的儿子数量,接下来 ci 个数字,分别为节点 i 的儿子编号。
接下来 q 行,每行两个整数 a,b。表示典籍 a 的阅读顺序必须出现在典籍 b 之前。
输出格式
输出 t 行,每行一个数字,表示符合规则的阅读顺序方案数,对 109+7 取模。
输入输出样例
输入#1
2 6 1 3 2 3 4 2 5 6 0 0 0 0 2 3 6 2 3 2 3 4 2 5 6 0 0 0 0 2 3 3 5
输出#1
6 0
说明/提示
样例 1 解释
样例包含两组测试数据,两组测试数据的树都如下图:

其中第一组测试数据要求节点 2 的典籍必须出现在典籍 3 之前。有 6 种满足条件的 DFS 顺序:
1,2,5,6,3,4
1,2,6,5,3,4
1,2,5,6,4,3
1,2,6,5,4,3
1,4,2,5,6,3
1,4,2,6,5,3
其中第二组测试数据相比第一组测试数据增加一条限制,为节点 3 的典籍必须出现在典籍 5 之前。上面 6 种 DFS 顺序均不能使得 3 在 5 之前,满足条件的 DFS 顺序数为 0。
附件
更多样例请查看:ancient test.zip
数据范围
对于所有测试数据有:
1≤t≤5
1≤n≤5×104
0≤q≤5×104
0≤ci≤15
a=b
| 测试点 | n≤ | q≤ | ci≤ | 特殊性质 |
|---|---|---|---|---|
| 1~3 | 10 | 10 | 10 | |
| 4~5 | 10 | 10 | 10 | c1=n−1 |
| 6~7 | 30 | 30 | 10 | |
| 8~9 | 102 | 2 | 2 | |
| 10~11 | 102 | 102 | 10 | |
| 12~13 | 103 | 0 | 10 | |
| 14 | 103 | 1 | 10 | |
| 15~17 | 103 | 103 | 10 | |
| 18 | 104 | 104 | 10 | 所有规则的 a,b 其中一个为 1 |
| 19 | 104 | 3 | 10 | |
| 20 | 104 | 104 | 2 | |
| 21~25 | 5×104 | 5×104 | 15 |