Submission #1232940

#TimeUsernameProblemLanguageResultExecution timeMemory
1232940Tenis0206Magic Tree (CEOI19_magictree)C++20
34 / 100
2097 ms32324 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int nmax = 1e5; int n, m, k; int t[nmax + 5]; vector<int> G[nmax + 5]; int d[nmax + 5], val[nmax + 5]; int dp[nmax + 5][25]; void dfs(int nod) { for(auto it : G[nod]) { dfs(it); } for(auto it : G[nod]) { for(int i=1;i<=k;i++) { dp[nod][i] += dp[it][i]; } } if(d[nod]) { dp[nod][d[nod]] += val[nod]; } for(int i=1;i<=k;i++) { dp[nod][i] = max(dp[nod][i], dp[nod][i - 1]); } } signed main() { ios::sync_with_stdio(false); cin.tie(0); #ifdef home freopen("nr.in","r",stdin); freopen("nr.out","w",stdout); #endif // home cin>>n>>m>>k; for(int i=2;i<=n;i++) { cin>>t[i]; G[t[i]].push_back(i); } for(int i=1;i<=m;i++) { int nod; cin>>nod; cin>>d[nod]>>val[nod]; } dfs(1); cout<<dp[1][k]<<'\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...