Pagini recente » Cod sursa (job #366531) | Cod sursa (job #3225762) | Cod sursa (job #261393) | Cod sursa (job #2125134) | Cod sursa (job #1841441)
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
static final int MOD = 1000000000 + 7;
static ArrayList<ArrayList<Integer> > graph;
static int ans, K;
static void dfs(int node, int father) {
int cnt = K;
if (father > 0)
cnt --;
for (int i = 0; i < graph.get(node).size(); ++ i)
if (graph.get(node).get(i) != father) {
dfs(graph.get(node).get(i), node);
ans = (int) (((long)cnt * ans) % MOD);
cnt --;
}
}
public static void main(String[] args) throws FileNotFoundException {
MyScanner sc = new MyScanner(new FileInputStream("colorare3.in"));
PrintWriter out = new PrintWriter("colorare3.out");
int N = sc.nextInt();
K = sc.nextInt();
graph = new ArrayList <ArrayList <Integer> >(N + 1);
for (int i = 0; i <= N; ++ i)
graph.add(new ArrayList <Integer>());
for (int i = 1; i < N; ++ i) {
int a = sc.nextInt();
int b = sc.nextInt();
graph.get(a).add(b);
graph.get(b).add(a);
}
ans = 1;
dfs(1, 0);
out.println(ans);
out.close();
}
public static class MyScanner {
BufferedReader br;
StringTokenizer st;
public MyScanner(FileInputStream fis) {
br = new BufferedReader(new InputStreamReader(fis));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
}
}