Cod sursa(job #1701568)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 13 mai 2016 15:35:38
Problema Mese Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<vector>
#include<algorithm>
#define DIM 100005
using namespace std;
int n, i, x, y, rad, sol, sum;
int val[DIM], s[DIM], w[DIM];
vector<int> v[DIM];
ifstream fin("mese.in");
ofstream fout("mese.out");
void dfs(int nod){
    s[nod] = val[nod];
    int i, vecin, x, nr = 0;
    for(i = 0; i < v[nod].size(); i++){
        vecin =  v[nod][i];
        dfs(vecin);
        w[++nr] = s[vecin];
    }
    sort(w + 1, w + nr + 1);
    for(i = 1; i <= nr; i++){
        if(s[nod] + w[i] <= sum){
            s[nod] += w[i];
        }
        else{
            break;
        }
    }
    sol += nr - i + 1;
}
int main(){
    fin>> n >> sum;
    for(i = 1; i <= n; i++){
        fin>> x >> val[i];
        if(x == 0){
            rad = i;
        }
        else{
            v[x].push_back(i);
        }
    }
    dfs(rad);
    fout<< sol + 1<<"\n";
    return 0;
}