Pagini recente » Cod sursa (job #466298) | Cod sursa (job #565180) | Cod sursa (job #466225) | Cod sursa (job #266298) | Cod sursa (job #467915)
Cod sursa(job #467915)
#include <stdio.h>
#define prim 1000000007
#define MAX_N 100010
int x, y, n, k;
int grad[MAX_N], v[MAX_N];
int start[MAX_N], stop[MAX_N];
int main() {
freopen("colorare3.in", "r", stdin);
freopen("colorare3.out", "w", stdout);
scanf("%d %d", &n, &k);
for (int i = 1; i < n; i++) {
scanf("%d %d", &x, &y);
grad[x]++; grad[y]++;
}
start[n] = 1;
stop[n - grad[1]] = -1;
for (int i = 2; i <= n; i++) {
grad[i]--;
start[n - 1]++;
stop[n - 1 - grad[i]]--;
}
int add = 0, val = k, sol = 1;
for (int i = n; i > 0; i--) {
add = add + start[i] + stop[i];
for (int j = 1; j <= add; j++)
sol = (1LL * sol * val) % prim;
val--;
}
printf("%d\n", sol);
return 0;
}