A93008.「NOIP2024」遗失的赋值
普及+/提高
NOI
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
小 F 有 n 个变量 x1,x2,…,xn。每个变量可以取 1 至 v 的整数取值。
小 F 在这 n 个变量之间添加了 n−1 条二元限制,其中第 i (1≤i≤n−1) 条限制为:若 xi=ai,则要求 xi+1=bi,且 ai 与 bi 为 1 到 v 之间的整数;当 xi=ai 时,第 i 条限制对 xi+1 的值不做任何约束。除此之外,小 F 还添加了 m 条一元限制,其中第 j (1≤j≤m) 条限制为:xcj=dj。
小 F 记住了所有 cj 和 dj 的值,但把所有 ai 和 bi 的值都忘了。同时小 F 知道:存在给每一个变量赋值的方案同时满足所有这些限制。
现在小 F 想知道,有多少种 ai,bi (1≤i≤n−1) 取值的组合,使得能够确保至少存在一种给每个变量 xi 赋值的方案可以同时满足所有限制。由于方案数可能很大,小 F 只需要你输出方案数对 109+7 取模的结果。
输入格式
从文件 assign.in 中读入数据。
本题包含多组测试数据。
输入的第一行包含一个整数 T,表示测试数据的组数。
接下来包含 T 组数据,每组数据的格式如下:
第一行包含三个整数 n,m,v,分别表示变量个数、一元限制个数和变量的取值上限。
接下来 m 行,第 j 行包含两个整数 cj,dj,描述一个一元限制。
输出格式
输出到文件 assign.out 中。
对于每组测试数据输出一行,包含一个整数,表示方案数对 109+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