#include "tree.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n, l, r;
vector<int> w;
vector<ll> st, c;
vector<vector<int>> g;
void init(std::vector<int> P, std::vector<int> W) {
w = W;
n = W.size();
g.resize(n);
for (int i=1; i<n; i++) g[P[i]].push_back(i);
}
void dfs(int cur){
for (int next : g[cur]){
dfs(next);
st[cur] += st[next];
}
if (st[cur] < l){
c[cur] = l-st[cur];
st[cur] = l;
}
if (st[cur] > r){
c[cur] = r-st[cur];
st[cur] = r;
}
}
ll query(int L, int R){
l = L;
r = R;
c.assign(n, 0);
st.assign(n, 0);
dfs(0);
ll res = 0;
for (int i=0; i<n; i++) res += (ll)w[i]*abs(c[i]);
return res;
}
# | 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... |