A116453.古老典籍(ancient)

普及+/提高

官方

通过率:0%

时间限制:3.00s

内存限制:1024MB

题目描述

在浩瀚的星空之下,有一座古老的智慧神殿,殿中藏有一棵名为“真理之树”的圣物。这棵树共有 nn 个节点,编号为 1n1 \sim n,其中节点 11 为根,每个节点都记载着一卷古老的典籍。

传说中,只有按照某种特定的从根节点 11 开始的深度优先搜索(DFS)顺序阅读学习这些典籍,才能领悟其中的终极智慧。然而,守护神殿的贤者们留下了一条禁忌规则:对于给定的 qq 对典籍 (a,b)(a,b),在阅读顺序中,节点 aa 的典籍必须出现在节点 bb 典籍之前。

现在,你作为新一代的贤者继承者,需要计算:在遵守所有禁忌规则的前提下,一共有多少种不同的阅读顺序?

由于答案可能非常巨大,你需要输出它对 109+710^9+7 取模的结果。

输入格式

输入的第一行 tt,表示测试数据的组数。

对于每组测试数据内:

输入的第一行包含三个正整数 n,qn,q,分别表示树的节点数,以及规则的数量。

接下来 nn 行,其中第 ii 行的第一个数字 cic_i 表示节点 ii 的儿子数量,接下来 cic_i 个数字,分别为节点 ii 的儿子编号。

接下来 qq 行,每行两个整数 a,ba,b。表示典籍 aa 的阅读顺序必须出现在典籍 bb 之前。

输出格式

输出 tt 行,每行一个数字,表示符合规则的阅读顺序方案数,对 109+710^9+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 解释

样例包含两组测试数据,两组测试数据的树都如下图:

其中第一组测试数据要求节点 22 的典籍必须出现在典籍 33 之前。有 66 种满足条件的 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

其中第二组测试数据相比第一组测试数据增加一条限制,为节点 33 的典籍必须出现在典籍 55 之前。上面 66 种 DFS 顺序均不能使得 3355 之前,满足条件的 DFS 顺序数为 00

附件

更多样例请查看:ancient test.zip

数据范围

对于所有测试数据有:

1t51 \le t \le 5

1n5×1041 \le n \le 5 \times 10^4

0q5×1040 \le q \le 5 \times 10^4

0ci150 \le c_i \le 15

aba \ne b

测试点 nn \le qq \le cic_i \le 特殊性质
1~3 10 10 10
4~5 10 10 10 c1=n1c_1=n-1
6~7 30 30 10
8~9 10210^2 2 2
10~11 10210^2 10210^2 10
12~13 10310^3 0 10
14 10310^3 1 10
15~17 10310^3 10310^3 10
18 10410^4 10410^4 10 所有规则的 a,ba,b 其中一个为 11
19 10410^4 3 10
20 10410^4 10410^4 2
21~25 5×1045 \times 10^4 5×1045 \times 10^4 15
首页