Cod sursa(job #466474)
#include <stdio.h>
using namespace std;
#define MOD 1000000007
int ap[100081];
long int x, y;
long int n;
long int i, j;
long long k;
long long posibilitati = 1;
int main ()
{
FILE *f = fopen ("colorare3.in","r");
FILE *g = fopen ("colorare3.out","w");
fscanf (f,"%ld %lld", &n, &k);
for (i=1; i<n; ++i)
{
fscanf (f,"%ld %ld", &x, &y);
ap[x] ++;
ap[y] ++;
}
posibilitati = k;
for (i=1; i<=n; ++i)
for (j=1; j<ap[i]; ++j)
posibilitati *= (long long) (k - j) % MOD;
fprintf (g,"%lld", posibilitati % MOD);
fclose(g);
fclose(f);
return 0;
}