제출 #1276642

#제출 시각아이디문제언어결과실행 시간메모리
1276642avighna트리 (IOI24_tree)C++20
10 / 100
2095 ms19452 KiB
#include <bits/stdc++.h> int n; std::vector<int> p, w; std::vector<std::vector<int>> adj; void init(std::vector<int> P, std::vector<int> W) { p = P, w = W, adj.resize(n = int(p.size())); for (int i = 1; i < n; ++i) { adj[p[i]].push_back(i); } } long long query(int L, int R) { std::vector<int64_t> c(n); auto dfs = [&](auto &&self, int u) -> int64_t { if (adj[u].empty()) { return c[u] = L; } int64_t sum = 0; for (int &i : adj[u]) { sum += self(self, i); } if (sum > R) { c[u] = sum - R; sum = R; } return sum; }; dfs(dfs, 0); int64_t ans = 0; for (int i = 0; i < n; ++i) { ans += w[i] * std::abs(c[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...