Cod sursa(job #2007828)

Utilizator refugiatBoni Daniel Stefan refugiat Data 4 august 2017 11:02:36
Problema Mese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#define NMAX 100005
using namespace std;
ifstream si("mese.in");
ofstream so("mese.out");
int sol,sum[NMAX],v[NMAX];
vector<int> f[NMAX];
void dfs(int x,int s)
{
    for(int i=0;i<f[x].size();++i)
        dfs(f[x][i],s);
    for(int i=0;i<f[x].size();++i)
        v[i]=sum[f[x][i]];
    sort(v,v+f[x].size());
    for(int i=0;i<f[x].size()&&v[i]+sum[x]<=s;++i,++sol)
    {
        sum[x]+=v[i];
    }
}
int main()
{
    int n,s;
    si>>n>>s;
    int x;
    for(int i=1;i<=n;++i)
    {
        si>>x>>sum[i];
        f[x].push_back(i);
    }
    dfs(0,s);
    so<<n+1-sol<<'\n';
    return 0;
}