Pagini recente » Cod sursa (job #975763) | Cod sursa (job #400505) | Cod sursa (job #1974221) | Cod sursa (job #576297) | Cod sursa (job #466286)
Cod sursa(job #466286)
#include<stdio.h>
int d[1001];
int a[1001],b[1001];
long k,n;
long permut(long a)
{
long long b=1,i;
for(i=2;i<=a;i++)
b=(b*i)%1000000007;
return b;
}
long comb(int a)
{
long long b=1,i;
if(a==0)
return 1;
for(i=k-a;i>=1;i--)
b=(b*i)%1000000007;
return b;
}
int main()
{
freopen("colorare3.in","r",stdin);
freopen("colorare3.out","w",stdout);
long long i,nr=1,ad,l;
scanf("%ld%ld",&n,&k);
for(i=1;i<=n-1;i++)
{
scanf("%ld%ld",&a[i],&b[i]);
d[a[i]]++;
d[b[i]]++;
}
for(i=1;i<=n;i++)
if(d[i]>k)
{
printf("0\n");
return 0;
}
for(i=1;i<=n;i++)
{
ad=0;
for(l=1;l<=n-i;l++)
if((a[l]==i&&b[l]<i)||(b[l]==i&&a[l]<i))
ad++;
if(ad==0)
nr=(nr*permut(d[i]))%1000000007;
else
{
ad=0;
for(l=1;l<=n-1;l++)
if((a[l]==i&&b[l]>i)||(b[l]==i&&a[l]>i))
ad++;
nr=(nr*comb(ad))%1000000007;
}
}
printf("%ld\n",nr);
return 0;
}