Pagini recente » Cod sursa (job #3184073) | Cod sursa (job #367307) | Cod sursa (job #507644) | Cod sursa (job #466210) | Cod sursa (job #467437)
Cod sursa(job #467437)
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
#define file_in "colorare3.in"
#define file_out "colorare3.out"
#define nmax 111111
int n,k;
int grad[nmax];
long long sol;
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
int x,y;
scanf("%d %d", &n, &k);
for (int i=1;i<n;++i)
{
scanf("%d %d", &x, &y);
grad[x]++;
grad[y]++;
}
}
#define mod 1000000007
long long aranj(int y, int x)
{
int i;
long long res=1;
for (i=y;i>y-x;--i)
res=(res*i)%mod;
return res;
}
void solve()
{
int i;
sol=1;
for (i=1;i<=n;++i)
if (i!=1)
// printf("%d %d\n", grad[i]-1,k-1);
sol=(sol*aranj(k-1,grad[i]-1))%mod;
//printf("%d\n",aranj(k-1,grad[i]-1));
else
//printf("%d %d\n", grad[i],k);
sol=(sol*aranj(k,grad[i]))%mod;
//printf("%d\n", aranj(k,grad[i]));
printf("%lld", sol);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}