Submission #1115696

#TimeUsernameProblemLanguageResultExecution timeMemory
1115696dynam1cJobs (BOI24_jobs)C++17
11 / 100
201 ms30268 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
  ll n, s;
  cin >> n >> s;
  vector<vector<int>> graph(n);
  vector<int> val(n), up(n);
  for (int i = 0; i < n; i++) {
    cin >> val[i] >> up[i];
    if (up[i]--)
      graph[up[i]].push_back(i);
  }

  function<ll(int)> dfs = [&](int v) {
    ll best = val[v];
    for (auto ne : graph[v])
      best += dfs(ne);
    return max(0LL, best);
  };

  ll ans = 0;
  for (int i = 0; i < n; i++)
    if (up[i] == -1)
      ans += dfs(i);
  cout << ans << endl;
}
#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...