bzoj#P2983. [Balkan2009] reading

[Balkan2009] reading

题目描述

定义任意两小写字母间有一个差别值 XX,假设 2626 个小写字母随意排列构成的都是单词,则对于一个单词可算出差别总和为 sum\rm sum,例如:假设 X[el]=3X[{\tt e}-{\tt l}]=3X[ly]=2X[{\tt l}-{\tt y}]=2X[ll]=1X[{\tt l}-{\tt l}]=1,则单词 elly\tt ellysum\rm sum 值为 3+1+2=63+1+2=6。 现在给出 nnmmnn 表示 sum\rm sum 值的上限(可以等于 nn),mm 表示已知关系个数,接下来 mm 行,每行三个数 L1L_1L2L_2ff,表示字母 L1L_1L2L_2L2L_2L1L_1XX 值都为 ff,若未提及的字母对则默认它们的 XX 值为 11,则问总共可形成多少符合条件的单词?

输入格式

第一行 n,mn,m

之后 mm 行,每行三个数 L1L_1L2L_2ff,保证每对字母最多出现一次。

输出格式

符合条件的单词总数 mod1000000007\mod 1000 000 007 的结果。

20 10
e l 3
e o 1
o n 2
o r 4
r a 4
i n 5
e n 2
n t 3
t w 3
w i 5


 470059518

数据规模与约定

对于 50%50 \% 的数据,1n1×1×1081 \leq n \leq 1 \times 1 \times 10^8

对于 100%100 \% 的数据,1X51 \leq X \leq 51f51 \leq f \leq 51n1×1×10121 \leq n \leq 1 \times 1 \times 10^{12}