atcoder#AGC016F. [AGC016F] Games on DAG

[AGC016F] Games on DAG

题目描述

N N 頂点 M M 辺の有向グラフ G G があります。 頂点には 1 1 から N N まで番号が振られています。 辺には 1 1 から M M まで番号が振られています。 辺 i i は頂点 xi x_i から yi y_i へ張られています。 ただし、xi です。また、多重辺はありません。 x_i\ です。 また、多重辺はありません。

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

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

  • 頂点 xi x_i に駒が置かれているような辺 i i を選び、頂点 xi x_i の駒 (2 2 つある場合は一方のみ) を頂点 yi y_i へ移動する。 2 2 つの駒が同一の頂点に置かれてもよい。

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

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

输入格式

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

N N M M x1 x_1 y1 y_1 x2 x_2 y2 y_2 : : xM x_M yM y_M

输出格式

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

题目大意

给定一个nn个点mm条边的DAG,对于每条边(u,v)(u,v)都满足u<vu<v1,21,2号点各一个石头,每次可以沿DAG上的边移动一颗石头,不能移动则输,求所有2m2^{m}个边的子集中,只保留这个子集先手必胜的方案个数

2 1
1 2
1
3 3
1 2
1 3
2 3
6
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

提示

制約

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

Sample Explanation 1

G G' は次図の 2 2 通りです。 高橋君が勝つ場合は ○ で、負ける場合は × で表しています。 ![b250f23c38d0f5ec2204bd714e7c1516.png](https://atcoder.jp/img/agc016/b250f23c38d0f5ec2204bd714e7c1516.png)

Sample Explanation 2

G G' は次図の 8 8 通りです。 ![8192fd32f894f708c5e4a60dcdea9d35.png](https://atcoder.jp/img/agc016/8192fd32f894f708c5e4a60dcdea9d35.png)