Pagini recente » Cod sursa (job #2013747) | Cod sursa (job #1687112) | Cod sursa (job #2068051) | Cod sursa (job #248979) | Cod sursa (job #1222364)
#include<cstdio>
#include<vector>
#include<algorithm>
#define N 100100
using namespace std;
int i,x,s,n,rez,val[N];
vector<int>v[N],sume;
inline void dfs(int x){
for(vector<int>::iterator it = v[x].begin(); it != v[x].end(); ++it)
dfs(*it);
sume.clear();
for(vector<int>::iterator it = v[x].begin(); it != v[x].end(); ++it)
sume.push_back(val[*it]);
sort(sume.begin(), sume.end());
for(i = 0 ; i < sume.size(); ++i)
{
if(sume[i] + val[x] > s)
break;
val[x] += sume[i];
}
rez += (sume.size() - i);
}
int main()
{
freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);
scanf("%d%d",&n,&s);
for(i = 1; i <= n; ++i)
{
scanf("%d%d", &x, &val[i]);
v[x].push_back(i);
}
dfs(0);
printf("%d\n", rez + 1);
return 0;
}