Submission #893655

#TimeUsernameProblemLanguageResultExecution timeMemory
893655heeheeheehaawBiochips (IZhO12_biochips)C++17
60 / 100
86 ms48044 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int INF = 2e9; int dp[10005][105]; int newdp[105]; vector<int> adj[200005]; int val[200005]; int n, k; void dfs(int nod, int parent) { for(auto it : adj[nod]) { if(it != parent) { dfs(it, nod); for(int i = 0; i <= k; i++) newdp[i] = dp[nod][i]; for(int i = 0; i <= k; i++) { if(dp[it][i] == 0) continue; for(int j = k - i; j >= 0; j--) if(dp[nod][j] != -INF) newdp[i + j] = max(newdp[i + j], dp[nod][j] + dp[it][i]); } for(int i = 0; i <= k; i++) dp[nod][i] = newdp[i]; } } dp[nod][1] = max(dp[nod][1], val[nod]); } signed main() { cin>>n>>k; int root; for(int i = 1; i <= n; i++) { int a, b; cin>>a>>b; if(a != 0) { adj[i].push_back(a); adj[a].push_back(i); } else root = i; val[i] = b; } for(int i = 1; i <= n; i++) for(int j = 1; j <= k; j++) dp[i][j] = -INF; dfs(root, root); cout<<dp[root][k]; return 0; }

Compilation message (stderr)

biochips.cpp: In function 'int main()':
biochips.cpp:65:21: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
   65 |     cout<<dp[root][k];
      |                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...