#P1419. 道路建设(road)

道路建设(road)

【Description】

A省有N座城市。很久之前,省政府要求每座城市建设一条到其他任意一座城市的道路。也就是说,a市到b市的道路,不是由a市建设的,就是由是b市建设的,每个城市最多建立一条道路。

但是由于各种原因,原本的建造N条道路的计划可能并没有被完成。最终只有M条道路被建出。

现在kAc已经知道了这M条道路的两端是哪两座城市。他想知道,一共有多少种不同的建造方案,答案对1000000007取模输出。

如果你认为不存在合法的方案,输出0。

(注:两种方案视为是不同的,当且仅当有至少一条道路是由不同的城市建立的)

【Input】

第一行两个正整数N, M 接下来M行每行两个正整数a, b。表示一条道路的两端是a,b两座城市,保证a不等于b。

【Output】

一个整数,表示对1000000007取模后的方案数。

【Sample Input】

5 4
1 2
3 2
4 5
4 5

【Sample Output】

6

【Hint】

6种方案如下

{2, 3, 4, 5}
{2, 3, 5, 4}
{1, 3, 4, 5}
{1, 3, 5, 4}
{1, 2, 4, 5}
{1, 2, 5, 4}

其中第i个数表示第i条道路是由谁建设的

对于20%:N, M<=20

对于另外30%:保证每个连通分量都是一棵树

对于另外30%:保证每个连通分量都是一个环

对于100%:N, M <= 200000