Cod sursa(job #3287516)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 18 martie 2025 14:34:10
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <vector>
#include <fstream>
#define mod 30011
#define nmx 105
using namespace std;
int n,k,q,x,pz,dp[nmx][nmx],sp[nmx][nmx],ro,rsp;
bool vf[nmx];
vector <int> v[nmx];
void doit(int source)
{
    if (v[source].size()==0)
    {
        for (int i=1; i<=k; i++)
            dp[source][i]=1;
        for (int i=k; i>=1; i--)
            sp[source][i]=(sp[source][i+1]+dp[source][i])%mod;
        return;
    }
    for (auto it : v[source])
        doit(it);
    for (int i=1; i<=k; i++)
    {
        dp[source][i]=1;
        for (auto it : v[source])
            dp[source][i]=(dp[source][i]*sp[it][i+1])%mod;
    }
    for (int i=k; i>=1; i--)
        sp[source][i]=(sp[source][i+1]+dp[source][i])%mod;
}
int main()
{
    ifstream f ("iepuri.in");
    ofstream g ("iepuri.out");
    f>>n>>k;
    int a,b;
    for (int i=1; i<n; i++)
    {
        f>>a>>b;
        v[a].push_back(b);
        vf[b]=1;
    }
    for (int i=1; i<=n; i++)
        if (!vf[i]) ro=i;
    doit(ro);
    for (int i=1; i<=k; i++)
        rsp=(rsp+dp[ro][i])%mod;
    g<<rsp;
}