Cod sursa(job #1222364)

Utilizator misinoonisim necula misino Data 22 august 2014 22:51:00
Problema Mese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 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;
}