Submission #1051333

#TimeUsernameProblemLanguageResultExecution timeMemory
1051333nisanduuJobs (BOI24_jobs)C++14
11 / 100
262 ms48976 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dfs(ll node,vector<vector<ll>>&adj,ll money,ll p,map<ll,ll> &cost){
    ll cr = money;
    cr += cost[node];
    for(auto el:adj[node]){
        if(el!=p){
            cr = max(cr,dfs(el,adj,cr,node,cost));
        }
    }
    return cr;
}

void solve(){
    ll n,s;
    cin>>n>>s;
    vector<vector<ll>> adj(n+10);
    map<ll,ll> cost;
    vector<ll> edges(n+10);
    queue<ll> q;
    for(ll i=0;i<n;i++){
        ll x,p;
        cin>>x>>p;
        cost[i] = x;
        if(p==0){
            q.push(i);
        }else{
            edges[i]++;
            adj[p-1].push_back(i);
        }
    }
    ll ans = 0;
    while(!q.empty()){
        ll node = q.front();
        //cout<<node<<endl;
        q.pop();
        ll y = dfs(node,adj,0,-1,cost);
        ans += max(0LL,y);
    }
    cout<<ans<<endl;
}
int main()
{
    
    solve();

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...