numbers

Accepts: 1
Submissions: 2
Time Limit: 12000/6000 MS (Java/Others)
Memory Limit: 196608/196608 K (Java/Others)
问题描述
现在你有一个栈和$n$个数$1,2,3,…,n$。这$n$个数依次进入栈顶,且在某个时刻在栈顶中弹出。你可以参见样例获得更多的信息。
这个问题非常简单,因此我想给你一些限制条件。
这里有$m$个限制,每个限制形如$< A,B >$,表示$A$必须在$B$之前先弹出。
你能告诉我有多少种合法的弹出栈的方案吗?
我知道这个答案或许非常大,你只需告诉我这个答案mod $1000000007({10}^{9}+7)$就行了。
输入描述
第一行有一个正整数$T$(大约5),表示数据的组数。
接下来每组数据包含两个数$n,m(1 \leq n \leq 300,1 \leq m \leq 90000)$。
接下来$m$行每行有两个正整数$A,B(1 \leq A,B \leq n)$。
(P.S:可能存在形如$< i,i >$这样的限制且可能存在多个相同的限制)。
输出描述
对于每一组数据,输出一个正整数表示方案总数 mod $1000000007$的值。
输入样例
5
1 0
5 0
3 2
1 2
2 3
3 2
2 1
2 3
3 3
1 2
2 3
3 1
输出样例
1
42
1
2
0
Hint
对于第3组数据,只有一种弹出序列的方案1,2,3。
对于第4组数据,存在两种弹出序列的方案2,3,1和2,1,3。