C. 随机独立集
题号:NC26152
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述


给一个 个点  条边的无向图。无重边,无自环。

对于一个点集,如果集合中的任意两个不同的点,在给出的图中没有边,那么我们称这个点集为点独立
集。

现有如下求点独立集的算法:

随机生成一个 1 到 n 的排列 p[]
ans={}
for i from 1 to n
    if p[i]的邻居都不在 ans 内:
        ans.insert(p[i])

求 `ans` 集合中元素个数的期望。答案可以表示成 的形式,其中 P,Q 互质,输出模 意义下的答案。

输入描述:

第一行两个整数 ,之后 m 行每行两个整数, 表示u,v之间有一条无向边,保证一条边不会被多次给出。

输出描述:

输出一个整数表示答案。
示例1

输入

复制
2 1
1 2

输出

复制
1
示例2

输入

复制
2 0

输出

复制
2