Submission #1221715

#TimeUsernameProblemLanguageResultExecution timeMemory
1221715MateiKing80Magic Tree (CEOI19_magictree)C++20
6 / 100
2 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 21;
int dp[N][N], timp[N], weight[N];
vector<int> vec[N];

void dfs(int nod) {
	for (auto i : vec[nod])
		dfs(i);
	for (auto i : vec[nod])
		for (int j = 0; j < N; j ++)
			dp[nod][j] += dp[i][j];
	int sus = dp[nod][timp[nod]] + weight[nod];
	for (int i = timp[nod]; i < N; i ++)
		dp[nod][i] = max(dp[nod][i], sus);
}

signed main() {
	int n, m, k;
	cin >> n >> m >> k;
	for (int i = 2; i <= n; i ++) {
		int p;
		cin >> p;
		vec[p].push_back(i);
	}
	for (int i = 0; i < m; i ++) {
		int v, d, w;
		cin >> v >> d >> w;
		timp[v] = d;
		weight[v] = w;
	}
	dfs(1);
	cout << dp[1][N - 1] << '\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...