编程题
修建公路3
### 题目描述
$L$ 城一共有 $N$ 个小区。
小明是城市建设的规划者,他计划在城市修 $M$ 条路,每修建一条路都要支付工人们相应的工钱(需要支付的工钱 $=$ 路的长度)。
小明所拿到的经费并不够支付修建 $M$ 条路的工钱,于是迫于无奈,他只能将计划改变为修建若干条路,使得 $N$ 个小区之间两两联通。
幸运的是,小明的表现和努力得到了蓝桥公司的认可,蓝桥公司愿意替小明承当全部经费。
当然,这一切并没有想象的那么简单,要想拿到这比经费,小明需要完成蓝桥公司的考核。
鉴于小明是设计大师,蓝桥公司出了道设计难题,题目内容如下:
有多少种不同的修建道路计划可以使得 $N$ 个小区之间两两联通。(不需要考虑经费问题)
在巨额的经费面前小明已迷失了心智,无法再思考任何问题了。作为他的好朋友,请帮帮他!答案对 $10^9 + 7$ 取模。
### 输入描述
输入第一行包含三个正整数 $N,M$。
第 $2$ 到 $M + 1$ 行每行包含两个正整数 $u,v$,表示 $u\leftrightarrow v$ 之间存在一条路。
$1\leq N \leq 3\times10^2$,$1 \leq m \leq10^5$,$1 \leq u_i, v_i\leq N$。
### 输出描述
输出占一行,包含一个整数,表示满足条件的计划个数对 $10^9+7$ 取模后的结果。
### 输入输出样例
#### 示例 1
>输入
```txt
3 3
1 2
1 3
2 3
```
>输出
```txt
3
```