Submission #1279294

#TimeUsernameProblemLanguageResultExecution timeMemory
1279294MisterReaperMagic Tree (CEOI19_magictree)C++20
6 / 100
564 ms1114112 KiB
// File magictree.cpp created on 14.10.2025 at 21:08:14 #include <bits/stdc++.h> using i64 = long long; #ifdef DEBUG #include "/home/ahmetalp/Desktop/Workplace/debug.h" #else #define debug(...) void(23) #endif constexpr int max_N = int(1E5) + 5; int N, M, K; int P[max_N]; int D[max_N]; int W[max_N]; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cin >> N >> M >> K; for (int i = 1; i < N; ++i) { std::cin >> P[i]; --P[i]; } for (int i = 0; i < M; ++i) { int V; std::cin >> V; --V; std::cin >> D[V] >> W[V]; --D[V]; } std::vector<std::vector<i64>> f(N, std::vector<i64>(K)); for (int v = N - 1; v >= 1; --v) { if (D[v] != -1) { f[v][D[v]] += W[v]; for (int i = 1; i < K; ++i) { f[v][i] = std::max(f[v][i], f[v][i - 1]); } } debug(v, f[v]); for (int i = 0; i < K; ++i) { f[P[v]][i] += f[v][i]; } } i64 ans = f[0][K - 1]; std::cout << ans << '\n'; return 0; }
#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...