Submission #1303535

#TimeUsernameProblemLanguageResultExecution timeMemory
1303535kawhietTree (IOI24_tree)C++20
0 / 100
2097 ms23812 KiB
#include <bits/stdc++.h> #include "tree.h" using namespace std; int n; vector<int> p, w, c; vector<vector<int>> g; void dfs(int u, int L, int R) { int sum = 0; for (auto v : g[u]) { dfs(v, L, R); sum += c[v]; } if (abs(L - sum) < abs(R - sum)) { c[u] = L - sum; } else { c[u] = R - sum; } } void init(vector<int> P, vector<int> W) { p = P; w = W; n = (int)p.size(); g.resize(n); c.resize(n); for (int i = 1; i < n; i++) { g[p[i]].push_back(i); } } long long query(int L, int R) { dfs(0, L, R); long long ans = 0; for (int i = 0; i < n; i++) { ans += 1LL * abs(c[i]) * w[i]; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...