Cod sursa(job #1227302)

Utilizator enedumitruene dumitru enedumitru Data 9 septembrie 2014 21:19:09
Problema Mese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
}