Cod sursa(job #780739)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 21 august 2012 10:22:19
Problema Colorare3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#define MOD 1000000007
using namespace std;
int n,K,grad[100100];
long long rez[100100],A[100100],sol; // A[i]=aranjamente de K-1 luate cate i

int main()
{
	int i,x,y;
	ifstream fin("colorare3.in");
	fin>>n>>K;
	for(i=1;i<n;i++)
	{
		fin>>x>>y;
		grad[x]++;
		grad[y]++;
	}
	fin.close();
	
	A[0]=1;
	for(i=1;i<=n;i++)
	{
		A[i]=A[i-1]*(long long)(K-i);
		A[i]%=MOD;
	}
	
	rez[1]=1;
	for(i=K-grad[1]+1;i<=K;i++)
	{
		rez[1]*=(long long)i;
		rez[1]%=MOD;
	}
	sol=rez[1]; //rez[1]=aranjamente de K luate cate grad[1]
	
	for(i=2;i<=n;i++)
	{
		rez[i]=A[grad[i]-1];
		sol*=rez[i];
		sol%=MOD;
	}
	
	ofstream fout("colorare3.out");
	fout<<sol<<"\n";
	fout.close();
	return 0;
}