luogu#P11498. [ROIR 2019 Day 1] 机器学习

[ROIR 2019 Day 1] 机器学习

题目背景

翻译自 ROIR 2019 D1T4

题目描述

有一种新的机器学习方法。在训练过程中,程序会进行 nn 次迭代。每次迭代中,训练程序会在某个训练集上运行。

训练集的复杂度从 00kk 不等。训练计划由一个整数数组 [a1,a2,,an][a_{1}, a_{2}, \dots, a_{n}] 表示,其中 0aik0 \leq a_{i} \leq kaia_{i} 表示第 ii 次迭代中使用的训练集的复杂度。

研究发现,训练计划的有效性取决于训练集复杂度的二进制表示。为了使计划有效,必须满足对于任意的 1i<jn1 \leq i < j \leq n,都有 (aiandaj)=ai(a_{i} \operatorname{and} a_{j})=a_{i},其中 and\operatorname{and} 是按位与。

然而,持续使用相同复杂度的训练集不会带来学习进展。为了避免这种情况,训练计划必须满足 mm 个二元限制。每个二元限制由两个数字 lil_{i}rir_{i} 表示,意味着 aliaria_{l_{i}} \neq a_{r_{i}}

实验室的工作人员希望找到满足所有二元限制的有效计划的数量。由于答案可能很大,你只需要求出答案对 109+710^{9}+7 取模后的值。

输入格式

第一行输入三个整数 n,m,kn, m, k,分别表示训练迭代次数、二元限制的数量和训练集的最大复杂度。

接下来 mm 行,每行输入一个二元限制。其中第 ii 行输入两个整数 li,ril_{i}, r_{i},表示 aliaria_{l_{i}} \neq a_{r_{i}}。保证所有二元限制都是不同的。

输出格式

输出一个整数,表示满足所有二元限制的有效计划的数量对 109+710^{9}+7 取模的结果。

2 0 3
9
3 1 2
1 2
2

提示

样例解释

样例 11 中所有可行的计划为:$[0,0],[0,1],[0,2],[0,3],[1,1],[1,3],[2,2],[2,3],[3,3]$。

样例 22 中所有可行的计划为:[0,1,1],[0,2,2][0,1,1],[0,2,2]

数据范围

数据中 Subtask 0 为样例。

子任务 分值 1n1\le n\le 0m0\le m\le 0k0\le k\le
11 88 500500 00 500500
22 2020 3×1053\times10^5 10710^7
33 1010 101810^{18}
44 88 5050
55 1616 20002000 10710^7
66 101810^{18}
77 1010 3×1053\times10^5 200200 10710^7
88 66 101810^{18}
99 1616 3×1053\times10^5