Submission #1118336

#TimeUsernameProblemLanguageResultExecution timeMemory
1118336alexddMagic Tree (CEOI19_magictree)C++17
34 / 100
1045 ms1048576 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int n,m,k; vector<int> con[100005]; int parent[100005]; int d[100005],w[100005]; vector<int> dp[100005]; void dfs(int nod) { dp[nod].resize(k+2,0); for(int adj:con[nod]) { dfs(adj); for(int i=1;i<=k;i++) dp[nod][i] += dp[adj][i]; } //for(int i=d[nod];i<=k;i++) // dp[nod][i] += w[nod]; dp[nod][d[nod]] += w[nod]; for(int i=1;i<=k;i++) dp[nod][i] = max(dp[nod][i], dp[nod][i-1]); //for(int i=1;i<=k;i++) cout<<nod<<" "<<i<<" "<<dp[nod][i]<<" dp\n"; } signed main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>m>>k; for(int i=2;i<=n;i++) { cin>>parent[i]; con[parent[i]].push_back(i); } for(int i=1;i<=m;i++) { int x; cin>>x; cin>>d[x]>>w[x]; } dfs(1); 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...