Cod sursa(job #466404)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 26 iunie 2010 15:53:54
Problema Colorare3 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("colorare3.in","r");
FILE*g=fopen("colorare3.out","w");
int n,k,x,y,v[100005],i,nr;

int cmp(int a,int b){
	return a>b;
}

long long combinari(int n,int k){
	int i = 0;
	long long p = 1;
	for ( i = n-k+1; i <= n; ++i )
		p = (p * i)%1000000007;
	
	return p;
}

int main () {
	
	fscanf(f,"%d %d",&n,&k);
	
	for ( i = 1 ; i < n ; ++i ){
		fscanf(f,"%d %d",&x,&y);
		
		++v[x]; ++v[y];
	}
	sort(v+1,v+n+1,cmp);
	nr = 1; 
	for ( i = 0; i < n ; ++i ){
		
		if( v[i+1] > i || v[i+1] == 1){
			
			nr = (nr * (combinari(k-i,v[i+1]-i)))%1000000007; 
			
			
		}
		
		else
			break;
		
		
		
	}
	
	fprintf(g,"%d",nr);
	fclose(f);
	fclose(g);
	return 0;
}