Cod sursa(job #3311192)

Utilizator Anul2024Anul2024 Anul2024 Data 20 septembrie 2025 12:19:49
Problema Mese Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 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],sumvec[DIM+1],sum[DIM+1];
vector <int> v[DIM+1];
void dfs (int nod)
{
    sum[nod]=val[nod];
    int lg=(int)v[nod].size ();
    for (int i=0; i<lg; i++)
    {
        int vecin=v[nod][i];
        dfs (vecin);
        sumvec[i+1]=sum[vecin];
    }
    sort (sumvec,sumvec+lg+1);
    sol+=lg;
    for (int i=1; i<=lg; i++)
    {
        if (sum[nod]+sumvec[i]<=S)
            sum[nod]+=sumvec[i];
        else
            break;
        sol--;
    }
}
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;
}