Pagini recente » Cod sursa (job #146974) | Cod sursa (job #2832479) | Cod sursa (job #35824) | Cod sursa (job #1502600) | Cod sursa (job #2023319)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
const int MOD = 1e9 + 7;
FILE *fin, *fout;
vector < int > G[MAXN];
int k, n, ans = 1, grd[MAXN];
inline int arrangements(int right, int left) {
int res = 1;
if (left == 0)
return 1LL;
for (int i = right; i > right - left; i--)
res = (1LL * res * i) % MOD;
return res;
}
int main()
{
fin = fopen( "colorare3.in", "r" );
fout= fopen( "colorare3.out","w" );
int x, y;
fscanf( fin, "%d%d", &n, &k );
for (int i = 1; i < n; i++) {
fscanf( fin, "%d%d", &x, &y );
grd[ x ]++;
grd[ y ]++;
}
for (int i = 1; i < n; i++) {
bool dad = 1;
if (i == 1)
dad = 0;
grd[ i ] -= dad;
ans = (1LL * ans * arrangements(k - dad, grd[ i ])) % MOD;
}
fprintf( fout, "%d", ans );
fclose( fin );
fclose( fout );
return 0;
}