Pagini recente » Cod sursa (job #183629) | Cod sursa (job #2751183) | Cod sursa (job #3151033) | Cod sursa (job #1808651) | Cod sursa (job #47882)
Cod sursa(job #47882)
#include<stdio.h>
#include<vector>
using namespace std;
const int maxn = 100000;
int s, n, i;
int val[maxn],v[maxn];
int j;
vector<int> vect[maxn];
int x, ans;
int dfs(int i)
{
vector<int> :: iterator it;
for(it = vect[i].begin();it != vect[i].end(); ++it)
{
dfs(*it);
}
for(it = vect[i].begin();it != vect[i].end(); ++it)
{
val[i] += val[*it];
}
val[i] += v[i];
if (val[i] > s)
{
val[i] = v[i];
ans += vect[i].size();
}
}
int main()
{
freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);
scanf("%d %d",&n,&s);
int st = 0;
for(i = 1;i <= n; ++i)
{
scanf("%d %d",&x,&v[i]);
if (x != 0)
{
vect[x].push_back(i);
}
if (x == 0)
{
st = i;
}
}
dfs(st);
printf("%d\n",ans);
return 0;
}