트리
시간 제한1초메모리 제한512 MB
N개의 정점에 M개의 지정된 간선을 반드시 포함하는 레이블 트리의 개수를 1e9+7로 나눈 나머지로 구한다.
문제
트리는 방향이 없는 그래프 중에서 어떤 두 정점을 잇는 경로가 정확히 하나인 그래프다. 다시 말해 모든 정점이 서로 연결되어 있고 사이클이 없는 그래프다.
서로 구별되는 정점 개로 트리를 만드는 경우의 수를 생각해 보자. 정점에 부터 까지 번호를 붙이면, 간선이 어떤 두 정점을 잇는지에 따라 경우를 구분할 수 있다. 예를 들어 이면 아래 그림처럼 트리가 16가지다.

서로 구별되는 정점 개로 만든 트리 중에서 주어진 간선 개를 모두 포함하는 트리의 개수를 구하는 프로그램을 작성하라.
입력
첫째 줄에 트리의 정점 개수 과 포함해야 하는 간선의 개수 이 공백으로 구분되어 주어진다. 이어지는 개의 줄에는 포함해야 하는 간선의 양 끝 정점 , ()가 주어진다. 와 는 서로 다른 수이며, 같은 간선이 여러 번 주어지는 일은 없다. 주어진 간선을 모두 포함하는 트리를 만들지 못할 수도 있다.
,
출력
주어진 간선을 모두 포함하는 트리의 개수를 출력한다. 이 수가 매우 커질 수 있으므로 로 나눈 나머지를 출력한다.
힌트

위 그림에서 정점 1과 정점 2를 잇는 간선을 빨간색으로 칠했다. 정점이 4개일 때 이 간선을 포함하는 트리는 8개뿐이다.