#include "tree.h"
#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int n;
vector<vector<int>> adj;
vector<ll> w;
void init(std::vector<int> P, std::vector<int> W) {
n = P.size();
adj.resize(n);
w.resize(n);
for(int i = 0; i<n; i++) w[i] = W[i];
for(int i = 1; i<n; i++) adj[P[i]].push_back(i);
}
long long query(int L, int R) {
ll r = R; ll l = L;
ll sol = 0;
function<ll(int)> dfs = [&](int v)->ll{
if(!adj[v].size()){
sol += w[v]*l;
return l;
}
ll sz = 0;
for(int u: adj[v]){
sz += dfs(u);
}
if(sz <= r) return sz;
sol += (sz-r)*w[v];
return r;
};
dfs(0);
return sol;
}
# | 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... |