#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<vector<ll>> adj;
vector<ll> a;
ll dfs(ll x, ll s) {
if (s < 0) return 0;
ll ans = a[x];
for (auto& y : adj[x]) {
ll e = dfs(y, s + a[y]);
if (e < 0) continue;
ans += e;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll n, s; cin >> n >> s;
adj.resize(n); a.resize(n);
vector<ll> st;
for (ll i = 0; i < n; i++) {
ll p; cin >> a[i] >> p;
p--;
if (p == -1) st.push_back(i);
else adj[p].push_back(i);
}
ll ans = 0;
for (auto& x : st) {
ans += dfs(x, s + a[x]);
}
cout << ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |