奇奇怪怪的魔法阵
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小 L 有一个魔法阵,这个魔法阵是一个 个点 条边的无向图,无重边无自环。点的编号为

小 L 可以激活一些点,使魔法阵释放出强大的能量。一个激活的点的集合 能释放出强大的能量当且仅当 之间没有边,我们称这样的集合 为独立集。注意空集也为独立集。

现在小 L 想求对于每一个点的集合 ,有多少子集为独立集。设 。我们要对于每一个 ,求出 A_T

由于输出的数太多,你只需要输出对 数组哈希的结果就行了。

定义,我们要输出: 取模的结果。

输入描述:

第一行两个数,,为点数和边数。

接下来 行,每行两个数,表示第 号节点和第 号节点有一条边,注意节点编号从开始数起。

保证给定的图没有自环和重边。

输出描述:

输出仅一行一个数,即为  数组的哈希值。
示例1

输入

复制
3 2
0 1
1 2

输出

复制
102064182

说明

独立集有 \emptyset,\{0\},\{1\},\{2\},\{0,2\},所以A_{\emptyset}=1,A_{\{0\}}=2,A_{\{1\}}=2,A_{\{2\}}=2,A_{\{0,1\}}=3,A_{\{0,2\}}=4,A_{\{1,2\}}=3,A_{\{0,1,2\}}=5

答案为 233^0*1+233^1*2+233^2*2+233^3*3+233^4*2+233^5*4+233^6*3+233^7*5\equiv 102064182 ~ (mod~1e9+7)