Cod sursa(job #465299)

Utilizator wefgefAndrei Grigorean wefgef Data 23 iunie 2010 19:54:59
Problema Colorare3 Scor Ascuns
Compilator cpp Status done
Runda Marime 0.66 kb
#include <cassert>
#include <cstdio>

const int MOD = 1000000007;
const int MAX_N = 100005;

int n;
long long k;
int deg[MAX_N];

int main() {
    assert(freopen("colorare3.in", "r", stdin) != NULL);
    assert(freopen("colorare3.out", "w", stdout) != NULL);

    assert(scanf("%d %lld", &n, &k) == 2);

    for (int i = 1; i < n; ++i) {
        int a, b;
        assert(scanf("%d %d", &a, &b) == 2);
        ++deg[a]; ++deg[b];
    }

    long long sol = 1;
    for (int i = 1; i <= deg[1]; ++i)
        sol = sol * (k - i + 1) % MOD;
    for (int i = 2; i <= n; ++i)
        for (int j = 1; j < deg[i]; ++j)
            sol = sol * (k - j) % MOD;

    printf("%lld\n", sol);
}