#include "tree.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=2e5;
vector<int> ch[maxn];
ll ans;
vector<ll> w;
int n;
ll dfs(int v,ll l,ll r){
ll x=0;
for(int u:ch[v]){
x+=dfs(u,l,r);
}
ll a=l-x,b=r-x,c;
if(a>0)c=a;
else if(b<0)c=b;
else c=0;
ans+=abs(c)*w[v];
return x+=c;
}
void init(std::vector<int> p, std::vector<int> W) {
n=p.size();
for(int i:W)w.push_back(i);
for(int i=1;i<n;i++)ch[p[i]].push_back(i);
}
long long query(int l, int r) {
ans=0;
dfs(0,l,r);
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... |