Pagini recente » Cod sursa (job #2931940) | Cod sursa (job #1998730) | Cod sursa (job #1529740) | Cod sursa (job #1576025) | Cod sursa (job #142390)
Cod sursa(job #142390)
using namespace std;
#include<cstdio>
#include<vector>
#include<algorithm>
#define Nm 100001
int A[Nm],B[Nm],S[Nm],V[Nm],n,s,r,i,k;
vector<int> G[Nm];
void read()
{
int i,t;
freopen("mese.in","r",stdin);
scanf("%d%d",&n,&s);
for(i=1;i<=n;++i)
{
scanf("%d%d",&t,S+i);
if(!t)
r=i;
else
G[t].push_back(i);
}
}
void DFS(int x)
{
vector<int>::iterator it;
A[x]=1;
for(it=G[x].begin();it!=G[x].end();++it)
{
DFS(*it);
A[x]+=A[*it];
}
k=0;
for(it=G[x].begin();it!=G[x].end();++it)
V[k++]=B[*it];
sort(V,V+k); B[x]=S[x];
for(i=0;i<k;++i)
if(B[x]+V[i]<=s)
--A[x], B[x]+=V[i];
}
void write()
{
freopen("mese.out","w",stdout);
printf("%d\n",A[r]);
}
int main()
{
read();
DFS(r);
write();
return 0;
}