Cod sursa(job #3311203)

Utilizator Anul2024Anul2024 Anul2024 Data 20 septembrie 2025 13:32:54
Problema Mese Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define DIM 100000
using namespace std;
ifstream fin ("mese.in");
ofstream fout ("mese.out");
int n,S,t,r,sol,val[DIM+1],sum[DIM+1],s[DIM+1];
vector <int> v[DIM+1];
void dfs (int nod)
{
    s[nod]=val[nod];
    int lg=(int)v[nod].size ();
    for (int i=0; i<lg; i++)
    {
        int vecin=v[nod][i];
        dfs (vecin);
        sum[i]=s[vecin];
    }
    for (int i=0; i<lg; i++)
    {
        int vecin=v[nod][i];
        sum[i]=s[vecin];
    }
    sort (sum,sum+lg);
    int pos=0;
    for (pos=0; pos<lg; pos++)
    {
        if (s[nod]+sum[pos]<=S)
            s[nod]+=sum[pos];
        else
            break;
    }
    sol+=lg-pos;
}
int main()
{
    fin>>n>>S;
    for (int i=1; i<=n; i++)
    {
        fin>>t>>val[i];
        if (t==0)
            r=i;
        else
            v[t].push_back (i);
    }
    dfs (r);
    fout<<sol+1;
    return 0;
}