Submission #1300459

#TimeUsernameProblemLanguageResultExecution timeMemory
1300459MinhKienBiochips (IZhO12_biochips)C++20
100 / 100
222 ms5964 KiB
#include <iostream> #include <vector> using namespace std; const int N = 2e5 + 10; const int M = 510; int n, k, u, a[N]; int root, dp[N][2]; int in[N], out[N], cnt; vector <int> v[N]; void DFS(int s) { in[s] = ++cnt; for (int z: v[s]) DFS(z); out[s] = cnt; } int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); cin >> n >> k; for (int i = 1; i <= n; ++i) { cin >> u >> a[i]; if (u == 0) root = i; else v[u].push_back(i); } DFS(root); for (int x = 1; x <= k; ++x) { for (int i = 1; i <= n; ++i) { dp[out[i]][1] = max(dp[out[i]][1], dp[in[i] - 1][0] + a[i]); } for (int i = 1; i <= n; ++i) { dp[i][0] = max(dp[i][1], dp[i - 1][0]); dp[i][1] = -1e9; } dp[0][0] = -1e9; } cout << dp[n][0] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...