AT_diverta2019_f Edge Ordering
Description
[problemUrl]: https://atcoder.jp/contests/diverta2019/tasks/diverta2019_f
$ N $ 個の頂点と、$ M $ 本の辺からなる単純かつ連結な無向グラフ $ G $ が与えられます。 頂点には $ 1 $ から $ N $ の番号が、辺には $ 1 $ から $ M $ の番号がついています。
辺 $ i $ は頂点 $ a_i $ と $ b_i $ を双方向につなぐ辺です。 ここで、頂点 $ 1,2,\ldots,N $ と辺 $ 1,2,\ldots,N-1 $ からなる部分グラフが $ G $ の全域木となることが保証されます。
頂点 $ 1,2,\ldots,N $ と辺 $ 1,2,\ldots,N-1 $ からなる木が $ G $ の最小全域木となるような辺への重みの割り当て方を *良い割り当て* と呼びます。
それぞれの辺に $ 1 $ から $ M $ までの相異なる整数の重みを割り当てる方法は $ M! $ 通りあります。 それらのうち、良い割り当てであるようなもの全てについて最小全域木に含まれる辺の重みの和を求め、それらの総和を $ 10^{9}+7 $ で割ったあまりを出力してください。
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 制約
- 入力は全て整数
- $ 2\ \leq\ N\ \leq\ 20 $
- $ N-1\ \leq\ M\ \leq\ N(N-1)/2 $
- $ 1\ \leq\ a_i,\ b_i\ \leq\ N $
- $ G $ に自己ループや多重辺は存在しない
- 頂点 $ 1,2,\ldots,N $ と辺 $ 1,2,\ldots,N-1 $ からなる部分グラフは $ G $ の全域木となる
### Sample Explanation 1
\- 辺 $ 3 $ に重み $ 3 $ が割り当てられたときに限り、良い割り当てとなります。 - これらの良い割り当てにおける $ G $ の最小全域木に含まれる辺の重みの和は $ 3 $ であり、良い割り当ての個数は $ 2 $ つなので答えは $ 6 $ となります。
### Sample Explanation 3
\- 総和を $ 10^{9}+7 $ で割ったあまりを出力してください。