Pagini recente » Cod sursa (job #856007) | Cod sursa (job #600809) | Cod sursa (job #2388483) | Cod sursa (job #3212494) | Cod sursa (job #3287516)
#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;
}