Submission #1258222

#TimeUsernameProblemLanguageResultExecution timeMemory
1258222efegJobs (BOI24_jobs)C++20
0 / 100
4 ms8512 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define all(v) v.begin(),v.end() int n,s; vector<int> x,toposort; vector<vector<int>> adj; vector<bool> vis; void topo(int node){ if (vis[node]) return; vis[node] = true; for (auto x : adj[node]){ topo(x); } toposort.pb(node); } int dfs(int node){ if (vis[node]) return 0; vis[node] = true; int sm = x[node]; for (auto to : adj[node]){ int res = max(0,dfs(to)); sm += res; } return max(sm,0); } int main(){ cin >> n >> s; x.assign(n,0); vis.assign(n,false); adj.assign(n+10,vector<int>()); for (int i = 0; i < n; i++) { int p; cin >> x[i] >> p; p--; if (p != -1) adj[p].pb(i); } for (int i = 0; i < n; i++) if (!vis[i]) topo(i); reverse(all(toposort)); vis.assign(n,false); int ans = 0; for (auto x : toposort){ ans += dfs(x); } cout << ans + s << endl; 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...