Cod sursa(job #548862)

Utilizator klamathixMihai Calancea klamathix Data 7 martie 2011 21:11:18
Problema Colorare3 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
}