Cod sursa(job #2616140)

Utilizator alexradu04Radu Alexandru alexradu04 Data 16 mai 2020 20:06:37
Problema Mese Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#define MAXN 100010
using namespace std;
vector<int> g[MAXN];
int n,s,answer=0;
short int cost[MAXN];
short int sum[MAXN],temp[MAXN],index;
void DFS(int node){
    int i,tables;
    sum[node]=cost[node];
    for(i=0;i<g[node].size();i++)
        DFS(g[node][i]);
    index=0;
    for(i=0;i<g[node].size();i++){
        index++;
        temp[index]=sum[g[node][i]];
    }
    sort(temp+1,temp+index+1);
    tables=index;
    for(i=1;i<=index;i++){
        if(sum[node]+temp[i]>s)
            break;
        sum[node]+=temp[i];
        tables--;
    }
    answer+=tables;
}
int main(){
    freopen("mese.in","r",stdin);
    freopen("mese.out","w",stdout);
    int i,x;
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;i++){
        scanf("%d%d",&x,&cost[i]);
        g[x].push_back(i);
    }
    cost[0]=s+1;
    DFS(0);
    printf("%d",answer);
    return 0;
}