100 atcoder#ABC133E. [ABC133E] Virus Tree 2

[ABC133E] Virus Tree 2

配点 : 500500

問題文

NN 頂点、N1N-1 辺を持つ木が与えられます。 頂点には番号 1,2,...,N1,2,...,N がつけられており、ii 番目の辺は頂点 ai,bia_i,b_i をつないでいます。

あなたは KK 色の絵の具を持っています。 木の頂点それぞれに対して、以下の条件を満たすように、KK 色の中から 11 色を選んで塗ることにしました。

  • 二つの異なる頂点 x,yx,y 間の距離が 22 以下ならば、頂点 xx の色と頂点 yy の色は異なる。

木を塗り分ける方法は何通りあるでしょうか。 総数を 1,000,000,0071,000,000,007 で割った余りを求めてください。

木とは

木とはグラフの一種です。詳しくはこちらをご覧ください: Wikipedia「木 (数学)」

距離とは

二つの頂点 x,yx,y 間の距離とは、xx から yy に到達する際にたどる必要のある最小の辺数です。

制約

  • 1N,K1051 \leqq N,K \leqq 10^5
  • 1ai,biN1 \leqq a_i,b_i \leqq N
  • 与えられるグラフは木である。

入力

入力は以下の形式で標準入力から与えられます。

NN KK

a1a_1 b1b_1

a2a_2 b2b_2

..

..

..

aN1a_{N-1} bN1b_{N-1}

出力

木の塗り分け方の総数を 1,000,000,0071,000,000,007 で割った余りを出力してください。

4 3
1 2
2 3
3 4
6

zu

塗り分け方は 66 通りです。

5 4
1 2
1 3
1 4
4 5
48
16 22
12 1
3 1
4 16
7 12
6 2
2 15
5 16
14 16
10 11
3 10
3 13
8 6
16 8
9 12
4 3
271414432