atcoder#AGC016F. [AGC016F] Games on DAG

[AGC016F] Games on DAG

配点 : 16001600

問題文

NN 頂点 MM 辺の有向グラフ GG があります。 頂点には 11 から NN まで番号が振られています。 辺には 11 から MM まで番号が振られています。 辺 ii は頂点 xix_i から yiy_i へ張られています。 ただし、xi<yix_i < y_i です。 また、多重辺はありません。

GGMM 本の辺集合からある部分集合を選び、GG からそれらの辺を取り除いてグラフ GG' を作ることを考えます。 このとき、グラフ GG'2M2^M 通りあり得ます。

グラフ GG' の上で、高橋君と青木君が次のようなゲームで勝負します。 まず、頂点 11, 22 に駒をひとつずつ置きます。 高橋君から始め、高橋君と青木君が交互に次の操作を行います。

  • 頂点 xix_i に駒が置かれているような辺 ii を選び、頂点 xix_i の駒 (22 つある場合は一方のみ) を頂点 yiy_i へ移動する。 22 つの駒が同一の頂点に置かれてもよい。

先に操作を行えなくなった方が負けです。 二人は最適に行動するとします。

2M2^M 通りの GG' のうち、高橋君が勝つような GG' は何通りでしょうか? 109+710^9+7 で割った余りを求めてください。

制約

  • 2N152 \leq N \leq 15
  • 1MN(N1)/21 \leq M \leq N(N-1)/2
  • 1xi<yiN1 \leq x_i < y_i \leq N
  • (xi, yi)(x_i,\ y_i) はすべて相異なる。

入力

入力は以下の形式で標準入力から与えられる。

NN MM

x1x_1 y1y_1

x2x_2 y2y_2

::

xMx_M yMy_M

出力

高橋君が勝つような GG' は何通りか? 109+710^9+7 で割った余りを出力せよ。

2 1
1 2
1

GG' は次図の 22 通りです。 高橋君が勝つ場合は ○ で、負ける場合は × で表しています。

b250f23c38d0f5ec2204bd714e7c1516.png

3 3
1 2
1 3
2 3
6

GG' は次図の 88 通りです。

8192fd32f894f708c5e4a60dcdea9d35.png

4 2
1 3
2 4
2
5 10
2 4
3 4
2 5
2 3
1 2
3 5
1 3
1 5
4 5
1 4
816