Pagini recente » Cod sursa (job #337898) | Cod sursa (job #466535)
Cod sursa(job #466535)
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;
#define MAXN 100000
#define MAXK 1000000000
#define MOD 1000000007
#define LL long long
int N, K, deg[MAXN];
int main() {
freopen("colorare3.in", "rt", stdin);
#ifndef DEBUG
freopen("colorare3.out", "wt", stdout);
#endif
assert(scanf("%d %d", &N, &K) == 2);
assert(1 <= N && N <= MAXN);
assert(1 <= K && K <= MAXK);
for (int i = 1; i < N; i++) {
int x, y;
assert(scanf("%d %d", &x, &y) == 2);
assert(1 <= x && x <= N && 1 <= y && y <= N && x != y);
deg[x] += 1;
deg[y] += 1;
}
for (int i = 1; i <= N; i++) {
assert(deg[i] <= K);
if (i != 1) {
deg[i] -= 1;
}
}
LL rez = 1;
for (int i = 1; i <= N; i++) {
for (int j = K - (i != 1); j > K - (i != 1) - deg[i]; j--) {
rez = (rez * j) % MOD;
}
}
printf("%lld\n", rez);
return 0;
}