Cod sursa(job #466132)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 26 iunie 2010 10:59:21
Problema Colorare3 Scor 70
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.84 kb
#include<stdio.h>
#include<vector>
using namespace std;

#define MOD 1000000007
#define ll long long

int viz[100006],ai,n,k;
ll sol;
vector <int> v[100006];

void dfs(int nod)
{
    int start,nr=v[nod].size();
    if(ai)
        start=k-1;
    else
    {
        start=k;
        ai=1;
    }
    for(int i=0;i<nr;i++)
        if(!viz[v[nod][i]])
        {
            sol=sol*start;//k se converteste automat la ll
            sol%=MOD;
            start--;
            viz[v[nod][i]]=1;
            dfs(v[nod][i]);
        }
}

int main ()
{
    int i,a,b;
    freopen("colorare3.in","r",stdin);
    freopen("colorare3.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<n;i++)
    {
        scanf("%d%d",&a,&b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    sol=1;
    viz[1]=1;
    dfs(1);
    printf("%lld\n",sol);
    return 0;
}