Pagini recente » Cod sursa (job #379408) | Cod sursa (job #2659654) | Cod sursa (job #2916155) | Cod sursa (job #418267) | Cod sursa (job #465454)
Cod sursa(job #465454)
#include <cassert>
#include <cstdio>
#include <vector>
using namespace std;
const int MAX_N = 100005;
const long long MOD = 1000000007;
int n, k;
char buf[16];
bool vis[MAX_N];
vector<int> g[MAX_N];
long long sol = 1;
void df(int node) {
vis[node] = true;
for (int i = (node == 1 ? 0 : 1); i < (int)g[node].size(); ++i)
sol = sol * (k - i) % MOD;
for (int i = 0; i < (int)g[node].size(); ++i)
if (!vis[g[node][i]])
df(g[node][i]);
}
int main() {
assert(freopen("colorare3.in", "r", stdin) != NULL);
assert(freopen("colorare3.out", "w", stdout) != NULL);
assert(scanf("%d %d\n", &n, &k));
for (int i = 1; i < n; ++i) {
assert(fgets(buf, 16, stdin));
int a, b;
sscanf(buf, "%d %d", &a, &b);
g[a].push_back(b);
g[b].push_back(a);
}
df(1);
printf("%lld\n", sol);
}