#2317. [GESP C++八级202412] 排队

[GESP C++八级202412] 排队

Description

小杨所在班级共有 nn 位同学,依次以 1,2,...,n1,2,...,n 标号。这 nn 位同学想排成一行队伍,其中有些同学之间关系非常 好,在队伍里需要排在相邻的位置。具体来说,有 mm 对这样的关系( 是一个非负整数)。当 m1m \geq 1 时,第 ii 对关 系(1im1 \leq i \leq m)给出 ai,bia_i, b_i,表示排队时编号为 aia_i 的同学需要排在编号为 bib_i 的同学前面,并且两人在队伍中相邻。

现在小杨想知道总共有多少种排队方式。由于答案可能很大,你只需要求出答案对 109+710^9 + 7 取模的结果。

对于树上的⼀条简单路径,⼩杨认为它的长度是路径包含节点的数量。⼩杨想知道最长的美丽路径的长度是多少。

Input Format

第一行,两个整数 n,mn,m,分别表示同学们的数量与关系数量。

接下来 mm 行,每行两个整数 ai,bia_i,b_i,表示一对关系。

Output Format

一行,一个整数,表示答案对 109+710^9 + 7 取模的结果。

4 2
1 3
2 4

2

3 0

6

3 2
1 2
2 1

0

Hint

数据范围

对于 20%20\% 的测试数据点,保证 1n8,0m101 \leq n \leq 8, 0 \leq m \leq 10

对于另外 20%20\% 的测试数据点,保证 1n1030m11 \leq n \leq 10^3,0 \leq m \leq 1

对于所有测试数据点,保证 $1 \leq n \leq 2 \times 10^5, 0 \leq m \leq 2 \times 10^5$。

Source

2024年12月GESP C++八级