Submission #1365963

#TimeUsernameProblemLanguageResultExecution timeMemory
1365963ezzzayJobs (BOI24_jobs)C++20
11 / 100
132 ms32804 KiB
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=4e5+5;
int p[N],x[N];
vector<int>v[N];
int cst[N];
void dfs(int a, int p){
    int s=0;
    for(auto b:v[a]){
        if(b==p)continue;
        dfs(b,a);
        s+=max(cst[b],0ll);
    }
    cst[a]=max(0ll,s+x[a]);
}
signed main(){
    int n,s;
    cin>>n>>s;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>p[i];
        if(p[i])v[p[i]].pb(i);
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        if(p[i]==0){
            dfs(i,0);
            ans+=cst[i];
        }
    }
    
    cout<<ans;
    
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...