#include "tree.h"
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> p, w;
vector<vector<int>>g;
void init(vector<int> P, vector<int> W) {
p = P;
w = W;
n = (int)p.size();
g=vector<vector<int>>(n,vector<int>());
for(int i = 1;i<n;i++){
g[p[i]].push_back(i);
}
}
long long dfs(int st, int l, int r, long long c[]){
long long belsum = 0;
if(g[st].size()==0){
c[st]=l;
return l;
}
for(int i : g[st]){
belsum+=dfs(i,l,r,c);
}
c[st]=0;
if(belsum>r){
c[st]=-(belsum-r);
belsum+=c[st];
}
return belsum;
}
long long query(int L, int R) {
long long C[n];
dfs(0,L,R,C);
long long ans = 0;
for(int i = 0;i<n;i++){
ans+=abs(C[i]*w[i]);
}
return 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |