#include <bits/stdc++.h>
using namespace std;
vector<int>child[300003];
long long sum[300003], mx[300003], energy[300003];
bool alive[300003];
void dfs(int u){
mx[u] = sum[u];
for(auto v : child[u]){
sum[v] = sum[u] + energy[v];
dfs(v);
mx[u] = max(mx[u], mx[v]);
}
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n;
long long s;
cin >> n >> s;
for(int i=1;i<=n;i++){
int p;
cin >> energy[i] >> p;
if(p == 0) alive[i] = 1;
else child[p].push_back(i);
}
long long ans = 0;
for(int i=1;i<=n;i++){
if(alive[i]){
sum[i] = energy[i];
dfs(i);
ans += max(0ll,mx[i]);
}
}
cout << ans;
return 0;
}
# | 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... |