#agc016f. [agc016_f]Games on DAG

[agc016_f]Games on DAG

题目描述

有一个有 NN 个顶点和 MM 条边的有向图 GG。顶点编号为 11NN,边编号为 11MM。第 ii 条边是从 xix_i 指向 yiy_i 的。这里,满足 xi<yix_i < y_i。并且 GG 中没有重复的边。

考虑在 GG 中选择一组边的子集,并从 GG 中删除这些边,得到另一个图 GG'。总共有 2M2^M 种不同的 GG'

Alice 和 Bob 在以下游戏中对抗。游戏在 GG' 上进行。首先,在顶点 1122 上放置两个棋子,一个棋子在每个顶点上。然后,从 Alice 开始,Alice 和 Bob 交替执行以下操作:

  • 选择一条边 ii,使得顶点 xix_i 上有放置了棋子,并将棋子移动到顶点 yiy_i 上(如果顶点 xix_i 上有两个棋子,则只移动一个)。两个棋子可以放在同一个顶点上。

当某个玩家无法执行操作时,该玩家输掉游戏。我们假设两个玩家都会以最佳策略进行游戏。

2M2^M 种不同的 GG' 中,有多少种会导致 Alice 获胜的情况?将计数结果对 109+710^9+7 取模。

约束条件

  • 2N152 ≤ N ≤ 15
  • 1MN(N1)/21 ≤ M ≤ N(N-1)/2
  • 1xi<yiN1 ≤ x_i < y_i ≤ N
  • 所有 (xi,yi)(x_i,\\ y_i) 都是不同的。

输入

输入从标准输入读取,格式如下:

NN MM x1x_1 y1y_1 x2x_2 y2y_2 :: xMx_M yMy_M

输出

打印导致 Alice 获胜的 GG' 的数量,对 109+710^9+7 取模。

示例输入 1

2 1
1 2

示例输出 1

1

下图显示了两种可能的 GG'。一个被标记为 ○ 的图导致 Alice 获胜,一个被标记为 × 的图导致 Bob 获胜。

b250f23c38d0f5ec2204bd714e7c1516.png

示例输入 2

3 3
1 2
1 3
2 3

示例输出 2

6

下图显示了八种可能的 GG'

8192fd32f894f708c5e4a60dcdea9d35.png

示例输入 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