Pagini recente » Cod sursa (job #3184215) | Cod sursa (job #337903) | Cod sursa (job #565081) | Cod sursa (job #2842027) | Cod sursa (job #466256)
Cod sursa(job #466256)
#include <fstream>
using namespace std;
struct list{int x,y;};
list c[1<<17];
int v[1<<17],f[1<<17],n,k;
bool fix[1<<17];
const int mod=1000000007;
ifstream in("colorare3.in");
ofstream out ("colorare3.out");
long long a(int n,int k)
{
long long s=1;
for (int i=n-k+1;i<=n;i++)
s=(s*i)%mod;
return s;
}
int main()
{
long long sol;
int x,i;
in>>n>>k;
for (i=1;i<n;i++)
{
in>>c[i].x>>c[i].y;
f[c[i].x]++;
f[c[i].y]++;
}
x=1;
for (i=2;i<=n;i++)
if (f[x]<f[i])
x=i;
fix[x]=true;
for (i=1;i<n;i++)
{
if (fix[c[i].x])
{
v[c[i].x]++;
fix[c[i].y]=true;
continue;
}
if (fix[c[i].y])
{
fix[c[i].x]=true;
v[c[i].y]++;
continue;
}
fix[c[i].x]=true;
fix[c[i].y]=true;
v[c[i].x]=1;
}
sol=1;
k--;
for (i=1;i<=n;i++)
if (v[i])
{
if (i==x)
sol=(sol*a(k+1,v[i]))%mod;
else
sol=(sol*a(k,v[i]))%mod;
}
out<<sol<<"\n";
return 0;
}