Submission #1145313

#TimeUsernameProblemLanguageResultExecution timeMemory
1145313keaucucalJobs (BOI24_jobs)C++20
29 / 100
231 ms19272 KiB
#include <iostream> #include <vector> #include <queue> #include <utility> using namespace std; using ll = long long; #define int long long signed main() { ll n, s; cin >> n >> s; vector<int> val(n + 1); vector<vector<int>> adj(n + 1); priority_queue<pair<int, int>> pq; for (int i = 1; i <= n; i++) { int p; cin >> val[i] >> p; adj[p].push_back(i); if (p == 0) { pq.push(make_pair(val[i], i)); } } ll ans = s; while (!pq.empty()) { int sum = pq.top().first; int u = pq.top().second; pq.pop(); if (sum + ans < 0) { // cout << u << ' ' << sum << '\n'; break; } if (sum > 0) { // cout << u << ' ' << sum << '\n'; ans += sum; sum = 0; } for (int v : adj[u]) { pq.push(make_pair(sum + val[v], v)); } } cout << ans - s << '\n'; // cout << ans << '\n'; // cout << ans - s << '\n'; }
#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...