Pagini recente » Cod sursa (job #3252937) | Cod sursa (job #2061154) | Cod sursa (job #567106) | Cod sursa (job #2055605) | Cod sursa (job #548862)
Cod sursa(job #548862)
#include<fstream>
#include<vector>
using namespace std;
const int maxn = 100005;
const int mod = 1000000007;
ifstream fin("colorare3.in");
ofstream fout("colorare3.out");
int i , j , a , b , n , k , dp[maxn];
bool seen[maxn];
vector <int> G[maxn];
void df( int node ) {
int i;
dp[node] = 1;
seen[node] = 1;
bool t = (node != 1);
for( i = 0 ; i < G[node].size() - t; ++i )
dp[node] = (dp[node] * (k - i - t)) % mod;
for( i = 0 ; i < G[node].size() ; ++i )
if ( ! seen[G[node][i]] )
df(G[node][i]),
dp[node] = (1LL * dp[node] * dp[G[node][i]]) % mod;
}
int main()
{
for( fin >> n >> k, i = 1 ; i < n ; ++i )
fin >> a >> b,
G[a].push_back(b),
G[b].push_back(a);
df(1);
fout << dp[1] << "\n";
return 0;
}