제출 #1162271

#제출 시각아이디문제언어결과실행 시간메모리
1162271domblyMagic Tree (CEOI19_magictree)C++20
34 / 100
44 ms30792 KiB
#include <bits/stdc++.h> #define F first #define S second #define int long long #define pb push_back using namespace std; const int N = 2e5 + 10; const int inf = 1e16; const int mod = 998244353; vector<int> g[N]; int d[N], w[N], dp[N][21]; void Dfs(int x, int p) { for(int j : g[x]) { if(j != p) { Dfs(j, x); } } for(int j = 1; j <= 20; j++) { int sum = 0; for(int i : g[x]) { if(i != p) sum += dp[i][j]; } dp[x][j] = max(dp[x][j - 1], sum + (d[x] == j ? w[x] : 0)); } } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m, k; cin >> n >> m >> k; for(int i = 2; i <= n; i++) { int x; cin >> x; g[x].pb(i); } for(int i = 1; i <= m; i++) { int u, dd, ww; cin >> u >> dd >> ww; d[u] = dd; w[u] = ww; } Dfs(1,0); cout << dp[1][k]; 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...