#include <bits/stdc++.h>
#define int long long
#define vi vector<int>
#define vs vector<string>
#define vc vector<char>
#define vii vector<vi>
#define fi first
#define pii pair<int, int>
#define se second
#define mp make_pair
#define all(v) v.begin(), v.end()
#define pqi priority_queue<int>
#define pb push_back
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
const int mod = 998244353;
using namespace std;
int n, s;
vii adj;
vi v;
int f(int cur) {
int sum = v[cur];
for(auto i : adj[cur]) {
int temp = f(i);
if(temp > 0) sum += temp;
}
return sum;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while(cin >> n >> s) {
adj.clear(); adj.resize(n);
v.clear(); v.resize(n);
queue<int> q;
for(int i = 0; i < n; i++) {
int x, p; cin >> x >> p;
v[i] = x;
if(p > 0) {
p--;
adj[p].push_back(i);
}
else q.push(i);
}
while(!q.empty()) {
int sum = f(q.front());
q.pop();
if(sum > 0) s += sum;
}
cout << s << endl;
}
}
# | 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... |