#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