Pagini recente » Cod sursa (job #1303552) | Cod sursa (job #1340132) | Cod sursa (job #1826974) | Cod sursa (job #428857) | Cod sursa (job #476674)
Cod sursa(job #476674)
#include <algorithm>
#include <stdio.h>
#define restRez 1000000007
#define MAX 100010
#define ll long long
using namespace std;
int n, k;
ll aranj1[MAX], aranj2[MAX];
int g[MAX];
int main()
{
freopen("colorare3.in", "r", stdin);
freopen("colorare3.out", "w", stdout);
scanf("%d %d", &n, &k);
aranj1[0] = aranj2[0] = 1;
for (int i = k; i > max(0, k - n); i--)
{
aranj1[k - i + 1] = (aranj1[k - i] * i) % restRez;
aranj2[k - i + 1] = (aranj2[k - i] * (i - 1)) % restRez;
}
for (int i = 1; i < n; i++)
{
int n1, n2;
scanf("%d %d", &n1, &n2);
g[n1]++;
g[n2]++;
}
ll sol = aranj1[g[1]];
for (int i = 2; i <= n; i++)
sol = (sol * aranj2[g[i] - 1]) % restRez;
printf("%lld\n", sol);
fclose(stdin);
fclose(stdout);
return 0;
}