#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
int n, m, k;
vector<pii> fruits;
vector<vector<int>> adj;
vector<vector<int>> dp;
void DFS(int v, int p){
for(auto u : adj[v]){
if(u == p) continue;
DFS(u,v);
}
for(int t = 1; t <= k; t++){
int s = 0;
for(auto u : adj[v]){
s += dp[t][u];
}
int add = 0;
if(t == fruits[v].first){
add += fruits[v].second;
}
dp[t][v] = max(s + add, dp[t-1][v]);
}
}
int32_t main(){
cin >> n >> m >> k;
adj.resize(n);
fruits.resize(n);
int s = 0;
for(int i = 1; i < n; i++){
int p;
cin >> p;
p--;
adj[i].push_back(p);
adj[p].push_back(i);
}
for(int i = 0; i <m; i++){
int v, d, w;
cin >> v >> d >>w;
s += w;
}
cout << s << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |