Pagini recente » football2 | Cod sursa (job #1351636) | Cod sursa (job #1222554) | Cod sursa (job #1524985) | Cod sursa (job #832940)
Cod sursa(job #832940)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int sol,n,i,k,s,m,cost[100005],tata,y,x;
vector<int>v[100006];
int df(int x)
{
int rez=0,dim=-1;
vector<int>a;
for (int j=0;j<v[x].size();j++)
{
rez+=df(v[x][j]);
cost[x]+=cost[v[x][j]];
a.push_back(cost[v[x][j]]);
dim++;
}
if (cost[x]>k) sort(a.begin(),a.end());
for (i=dim;i>=0;i--)
{
if (cost[x]<=k) break;
cost[x]-=a[i];
rez++;
}
return rez;
}
int main()
{
freopen("mese.in","r",stdin);
freopen("mese.out","w",stdout);
scanf("%d %d",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%d %d",&x,&cost[i]);
if (x) v[x].push_back(i);else tata=i;
}
printf("%d\n",df(tata)+1);
return 0;
}