Cod sursa(job #577834)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 10 aprilie 2011 17:47:14
Problema Colorare3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define Nmax 100005
#define Kmax 1000000002
#define Mod 1000000007
#define LL long long

int N,K;
int A[Nmax], Fii[Nmax];

int main(){
    int i,x,y; int sol;
    freopen("colorare3.in","r",stdin);
    freopen("colorare3.out","w",stdout);
    scanf("%d%d",&N,&K);
    for(i=1;i<N;++i){
        scanf("%d%d",&x,&y);
        Fii[x]++; Fii[y]++;
    }

    sol=1;
    for(i=K-Fii[1]+1; i<=K; ++i)
        sol= (1LL * sol * i)%Mod;

    K--;
    A[0]=1;A[1]=K;
    for(i=K-1;i>=K-N && i>0;--i)
        A[K-i+1]=(1LL*A[K-i]*i)%Mod;

    for(i=2;i<=N;++i)
        sol = ( 1LL*sol*A[Fii[i]-1])%Mod;

    printf("%d\n",sol);
    fclose(stdin); fclose(stdout);
    return 0;
}