AiScReam

  • サンプル1の説明が適切でなかったため修正しました。(2025/12/17 3:23)

問題文

moguさんは、11 から NN までの整数について、MM 個の質問を投げられ、それぞれ次のように答えました。

  • moguさんは、11 から NN までの整数 ai,bia_i,b_i について、 aia_i よりも bib_i の方が好きである。

11 から NN までの整数を並び替えてできる数列 P=(p1,p2,...,pN)P = (p_1,p_2,...,p_N) のうち、全ての i(1iM)i(1 \leq i \leq M) について pbi<paip_{b_i} < p_{a_i} を満たすようなものの個数を 998244353998244353 で割った余りを求めてください。

制約

  • 2N202 \leq N \leq 20
  • 1MN(N1)1 \leq M \leq N(N-1)
  • 1ai,biN1 \leq a_i,b_i \leq N
  • aibia_i \neq b_i
  • 条件を満たす PP は必ず存在する。

入力

入力はすべて整数である。

N M
a_1 b_1
a_2 b_2
...
a_M b_M

出力

11 から NN までの整数を並び替えてできる数列 P=(p1,p2,...,pN)P = (p_1,p_2,...,p_N) のうち、全ての i(1iM)i(1 \leq i \leq M) について pbi<paip_{b_i} < p_{a_i} を満たすようなものの個数を 998244353998244353 で割った余りを1行に出力せよ。

サンプル

入力1
4 2
1 2
2 3
出力1
4

条件より、p3<p2<p1p_3 < p_2 < p_1 となります。残った p4p_4p1,p2,p3p_1,p_2,p_3 で使われなかった 11 個の整数なので、条件を満たす数列の個数は p4p_4 の選び方の総数より 44 個となります。

入力2
2 1
2 1
出力2
1

条件を満たす数列は P=(1,2)P = (1,2) しかありえません。

入力3
5 3
3 4
1 3
2 3
出力3
10

提出


Go (1.21)