[AGC016F] Games on DAG

题意翻译

给定一个 $n$ 个点 $m$ 条边的 DAG,对于每条边 $(u,v)$ 都满足 $u<v$,$1,2$ 号点各一个石头,每次可以沿 DAG 上的边移动一颗石头,不能移动则输,求所有 $2^{m}$ 个边的子集中,只保留这个子集先手必胜的方案个数。 注意:两个石头可以重合。

题目描述

[problemUrl]: https://atcoder.jp/contests/agc016/tasks/agc016_f $ N $ 頂点 $ M $ 辺の有向グラフ $ G $ があります。 頂点には $ 1 $ から $ N $ まで番号が振られています。 辺には $ 1 $ から $ M $ まで番号が振られています。 辺 $ i $ は頂点 $ x_i $ から $ y_i $ へ張られています。 ただし、$ x_i\ です。 また、多重辺はありません。 $ $ G $ の $ M $ 本の辺集合からある部分集合を選び、$ G $ からそれらの辺を取り除いてグラフ $ G' $ を作ることを考えます。 このとき、グラフ $ G' $ は $ 2^M $ 通りあり得ます。 グラフ $ G' $ の上で、高橋君と青木君が次のようなゲームで勝負します。 まず、頂点 $ 1 $, $ 2 $ に駒をひとつずつ置きます。 高橋君から始め、高橋君と青木君が交互に次の操作を行います。 - 頂点 $ x_i $ に駒が置かれているような辺 $ i $ を選び、頂点 $ x_i $ の駒 ($ 2 $ つある場合は一方のみ) を頂点 $ y_i $ へ移動する。 $ 2 $ つの駒が同一の頂点に置かれてもよい。 先に操作を行えなくなった方が負けです。 二人は最適に行動するとします。 $ 2^M $ 通りの $ G' $ のうち、高橋君が勝つような $ G' $ は何通りでしょうか? $ 10^9+7 $ で割った余りを求めてください。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ x_1 $ $ y_1 $ $ x_2 $ $ y_2 $ $ : $ $ x_M $ $ y_M $

输出格式


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

输入输出样例

输入样例 #1

2 1
1 2

输出样例 #1

1

输入样例 #2

3 3
1 2
1 3
2 3

输出样例 #2

6

输入样例 #3

4 2
1 3
2 4

输出样例 #3

2

输入样例 #4

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

输出样例 #4

816

说明

### 制約 - $ 2\ <\ =\ N\ <\ =\ 15 $ - $ 1\ <\ =\ M\ <\ =\ N(N-1)/2 $ - $ 1\ <\ =\ x_i $ - $ (x_i,\ y_i) $ はすべて相異なる。 ### Sample Explanation 1 $ G' $ は次図の $ 2 $ 通りです。 高橋君が勝つ場合は ○ で、負ける場合は × で表しています。 !\[b250f23c38d0f5ec2204bd714e7c1516.png\](https://atcoder.jp/img/agc016/b250f23c38d0f5ec2204bd714e7c1516.png) ### Sample Explanation 2 $ G' $ は次図の $ 8 $ 通りです。 !\[8192fd32f894f708c5e4a60dcdea9d35.png\](https://atcoder.jp/img/agc016/8192fd32f894f708c5e4a60dcdea9d35.png)