A93008.「NOIP2024」遗失的赋值

普及+/提高

NOI

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

小 F 有 nn 个变量 x1,x2,,xnx_1, x_2, \ldots , x_n。每个变量可以取 11vv 的整数取值。

小 F 在这 nn 个变量之间添加了 n1n - 1 条二元限制,其中第 ii (1in1)(1 \leq i \leq n - 1) 条限制为:若 xi=aix_i = a_i,则要求 xi+1=bix_{i+1} = b_iaia_ibib_i11vv 之间的整数;当 xiaix_i \neq a_i 时,第 ii 条限制对 xi+1x_{i+1} 的值不做任何约束。除此之外,小 F 还添加了 mm 条一元限制,其中第 jj (1jm)(1 \leq j \leq m) 条限制为:xcj=djx_{c_j} = d_j

小 F 记住了所有 cjc_jdjd_j 的值,但把所有 aia_ibib_i 的值都忘了。同时小 F 知道:存在给每一个变量赋值的方案同时满足所有这些限制。

现在小 F 想知道,有多少种 ai,bia_i, b_i (1in1)(1 \leq i \leq n - 1) 取值的组合,使得能够确保至少存在一种给每个变量 xix_i 赋值的方案可以同时满足所有限制。由于方案数可能很大,小 F 只需要你输出方案数对 109+710^9 + 7 取模的结果。

输入格式

从文件 assign.in 中读入数据。

本题包含多组测试数据

输入的第一行包含一个整数 TT,表示测试数据的组数。

接下来包含 TT 组数据,每组数据的格式如下:

第一行包含三个整数 n,m,vn, m, v,分别表示变量个数、一元限制个数和变量的取值上限。

接下来 mm 行,第 jj 行包含两个整数 cj,djc_j, d_j,描述一个一元限制。

输出格式

输出到文件 assign.out 中。

对于每组测试数据输出一行,包含一个整数,表示方案数对 109+710^9 + 7 取模的结果。

输入输出样例

  • 输入#1

    3
    2 1 2
    1 1
    2 2 2
    1 1
    2 2
    2 2 2
    1 1
    1 2

    输出#1

    4
    3
    0
首页