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...