Submission #97436

#TimeUsernameProblemLanguageResultExecution timeMemory
97436aquablitz11Biochips (IZhO12_biochips)C++14
100 / 100
204 ms12380 KiB
#include <bits/stdc++.h> using namespace std; const int N = 200010; const int M = 510; vector<int> G[N]; int val[N], dp[2][N]; int ip[N], idx[N], nxt[N], tim; void dfs(int u) { int p = ++tim; idx[p] = u; ip[p] = val[u]; for (auto v : G[u]) dfs(v); nxt[p] = tim+1; } int main() { int n, m; scanf("%d%d", &n, &m); int r = 0; for (int i = 1; i <= n; ++i) { int p; scanf("%d%d", &p, &val[i]); if (p) G[p].push_back(i); else r = i; } dfs(r); /*for (int i = 1; i <= n; ++i) printf("%d ", idx[i]); printf("\n"); for (int i = 1; i <= n; ++i) printf("%d ", nxt[i]); printf("\n"); for (int i = 1; i <= n; ++i) printf("%d ", ip[i]); printf("\n");*/ for (int i = 1; i <= m; ++i) { int x = i&1; int p = x^1; dp[x][n+1] = -(2e9+1); for (int j = n; j >= 1; --j) dp[x][j] = max(dp[x][j+1], dp[p][nxt[j]]+ip[j]); } printf("%d\n", dp[m&1][1]); return 0; }

Compilation message (stderr)

biochips.cpp: In function 'int main()':
biochips.cpp:23:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
biochips.cpp:27:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &p, &val[i]);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...