Submission #1184853

#TimeUsernameProblemLanguageResultExecution timeMemory
1184853UnforgettableplMagic Tree (CEOI19_magictree)C++20
34 / 100
2093 ms1114112 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,m,k; cin >> n >> m >> k; vector<vector<int>> adj(n+1); for(int i=2;i<=n;i++){ int p;cin>>p; adj[p].emplace_back(i); } vector<int> w(n+1); vector<int> d(n+1); for(int i=1;i<=m;i++){ int v,dd,ww;cin>>v>>dd>>ww; w[v]=ww; d[v]=dd; } function<vector<int>(int)> dfs = [&](int x){ vector<int> DP(k+1); for(int&i:adj[x]){ auto t = dfs(i); for(int j=1;j<=k;j++)DP[j]+=t[j]; } if(d[x]){ // is a fruit int base = w[x]+DP[d[x]]; for(int i=d[x];i<=k;i++)DP[i]=max(DP[i],base); } return DP; }; cout << dfs(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...