Cod sursa(job #466182)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 26 iunie 2010 11:55:35
Problema Colorare3 Scor 100
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.77 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define maxn 100010
#define mod 1000000007

long n, i, j, k, a, b, gr[maxn], a1[maxn], a2[maxn];
long sol;

int main()
{
    freopen("colorare3.in", "r", stdin);
    freopen("colorare3.out", "w", stdout);
    scanf("%d%d", &n, &k);
    a1[0]=a2[0]=1;
    for(i=1; i<=n; i++)
    {
        if(i<=k)
            a1[i]=(1LL*a1[i-1]*(k-i+1))%mod;
        else
            a1[i]=a1[i-1];
        if(i<k)
            a2[i]=(1LL*a2[i-1]*(k-i))%mod;
        else
            a2[i]=a2[i-1];
    }
    for(i=1; i<n; i++)
    {
        scanf("%d%d", &a, &b);
        gr[a]++;
        gr[b]++;
    }
    sol=a1[gr[1]];
    for(i=2; i<=n; i++)
    {
        sol=(1LL*sol*a2[gr[i]-1])%mod;
    }
    printf("%d\n", sol);
    return 0;
}