Cod sursa(job #466416)

Utilizator cont_de_testeCont Teste cont_de_teste Data 26 iunie 2010 16:10:51
Problema Colorare3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 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);
    assert(1 <= n && n <= 100000);
    assert(1 <= k && k <= 1000000000);

    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 <= n; ++i)
        for (int j = (i == 1 ? 0 : 1); j < deg[i]; ++j)
            sol = sol * (k - j) % MOD;

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