제출 #1176195

#제출 시각아이디문제언어결과실행 시간메모리
1176195vjudge2Magic Tree (CEOI19_magictree)C++20
34 / 100
2098 ms32524 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e5 + 5; int n, m, k, p[N], dp[N][21]; vector<int> adj[N]; pair<int, int> hang[N]; void dfs(int u) { for (int v : adj[u]) { dfs(v); for (int i = 0; i <= k; i++) dp[u][i] += dp[v][i]; } dp[u][hang[u].first] += hang[u].second; for (int i = 1; i <= k; i++) dp[u][i] = max(dp[u][i], dp[u][i-1]); } int32_t main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m >> k; for (int i = 2; i <= n; i++) { cin >> p[i]; adj[p[i]].push_back(i); } for (int i = 1; i <= m; i++) { int v, d, w; cin >> v >> d >> w; hang[v] = {d, w}; } dfs(1); cout << dp[1][k] << '\n'; }
#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...