Cod sursa(job #2239120)

Utilizator NOSCOPEPROKENDYMACHEAMACUMVREAU NOSCOPEPROKENDY Data 9 septembrie 2018 13:10:27
Problema Mese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
# include <fstream>
# include <vector>
# include <algorithm>
# define DIM 100010
using namespace std;
ifstream fin("mese.in");
ofstream fout("mese.out");
vector <int> Lista[DIM];
int j,n,s,i,x,y,ns,nr,k,r,v1;
unsigned char v[DIM];
unsigned short val[DIM],vec[DIM];
void dfs(int nc){
    int nv;
    for(int i=0;i<Lista[nc].size();i++){
        nv=Lista[nc][i];
        dfs(nv);
    }
    k=0;
    for(i=0;i<Lista[nc].size();i++){
        nv=Lista[nc][i];
        vec[++k]=val[nv];
    }
    sort(vec+1,vec+k+1);
    r=1;
    v1=v[nc];
    while((v1+vec[r])<=s&&r<=k)
        v1+=vec[r++];
    nr+=k-r+1;
    val[nc]=v1;
}
int main () {
    fin>>n>>s;
    for(i=1;i<=n;i++){
        fin>>x>>y;
        if(x!=0)
            Lista[x].push_back(i);
        else
            ns=i;
        v[i]=y;
    }
    dfs(ns);
    fout<<nr+1<<"\n";
    return 0;
}