Pagini recente » Cod sursa (job #217778) | Cod sursa (job #866177) | Cod sursa (job #2484756) | Cod sursa (job #721415) | Cod sursa (job #1702706)
# include <fstream>
# include <vector>
# include <algorithm>
# define DIM 100010
using namespace std;
ifstream fin("mese.in");
ofstream fout("mese.out");
vector <int> Lista[DIM],sol[DIM];
int v[DIM],val[DIM],vec[DIM],j,n,s,i,x,y,ns,nr,k,r,v1;
void dfs(int nc){
int nv;
for(int i=0;i<Lista[nc].size();i++){
nv=Lista[nc][i];
if(val[nv]==0){
dfs(nv);
sol[nc].push_back(val[nv]);
}
}
k=0;
for(i=0;i<sol[nc].size();i++)
vec[++k]=sol[nc][i];
sort(vec+1,vec+k+1);
r=1;
v1=v[nc];
while((v1+vec[r])<=s&&r<=k)
v1+=vec[r++];
nr+=k-r+1;
val[nc]=v1;
}
int main () {
fin>>n>>s;
for(i=1;i<=n;i++){
fin>>x>>y;
if(x!=0)
Lista[x].push_back(i);
else
ns=i;
v[i]=y;
}
dfs(ns);
fout<<nr+1<<"\n";
return 0;
}