Pagini recente » Cod sursa (job #3255764) | Cod sursa (job #122893) | Cod sursa (job #2396987) | Cod sursa (job #431057) | Cod sursa (job #52048)
Cod sursa(job #52048)
#include <stdio.h>
#include <vector>
using namespace std;
#define Nmax 100001
struct nod
{
vector<int> a;
int c, mod;
char v;
} l[Nmax];
int n,S, SOL;
void DF(int nod)
{
l[nod].v = 1;
l[nod].mod += l[nod].c;
int i;
for(i=0;i<l[nod].a.size();++i)
{
if(l[l[nod].a[i]].v == 0)
DF(l[nod].a[i]);
l[nod].mod += l[l[nod].a[i]].mod;
}
SOL += l[nod].mod / S;
l[nod].mod %= S;
}
int main()
{
freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);
int a, i, tmp = 666;
scanf("%d%d", &n,&S);
for(i=1;i<=n;++i)
{
scanf("%d%d", &a,&l[i].c);
if(a)
l[a].a.push_back(i);
else
tmp = i;
}
DF(tmp);
SOL += l[tmp].mod > 0;
printf("%d\n", SOL);
return 0;
}