Pagini recente » Cod sursa (job #2949301) | Cod sursa (job #1858287) | Cod sursa (job #2436936) | Cod sursa (job #145535) | Cod sursa (job #46418)
Cod sursa(job #46418)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define nmax 100111
#define sz size()
#define FOR(i,s,d) for(i=(s);i<(d);++i)
int n,S,rad,H[nmax],aux[nmax],sol;
vector <int> G[nmax];
void parc(int i)
{
int j;
FOR(j,0,G[i].sz)
parc(G[i][j]);
FOR(j,0,G[i].sz)
aux[j]=H[G[i][j]];
sort(aux,aux+G[i].sz);
FOR(j,0,G[i].sz)
{
if(H[i]+aux[j]<=S)
H[i]+=aux[j],sol--;
else
break;
}
}
int main()
{
int i,j;
freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);
scanf("%d %d",&n,&S);
sol=n;
FOR(i,1,n+1)
{
scanf("%d %d",&j,&H[i]);
if(!j)
rad=i;
else
G[j].push_back(i);
}
parc(rad);
printf("%d\n",sol);
return 0;
}