Submission #236371

#TimeUsernameProblemLanguageResultExecution timeMemory
236371MohamedAhmed04바이오칩 (IZhO12_biochips)C++14
0 / 100
7 ms5120 KiB
#include <bits/stdc++.h> using namespace std ; const int MAXN = 2e5 + 5 , MAXM = 505 ; int arr[MAXN] , sz[MAXN] , dp[MAXN][MAXM] , tmpdp[MAXM] ; int n , m ; vector< vector<int> >adj(MAXN) ; void dfs(int node) { dp[node][0] = 0 ; sz[node] = 1 ; for(auto &child : adj[node]) { dfs(child) ; int Max = 0 ; for(int k1 = 0 ; k1 <= min(sz[node] , m) ; ++k1) { if(!dp[k1]) break ; for(int k2 = 1 ; k2 <= sz[child] && k1 + k2 <= m ; ++k2) { if(!dp[k2]) break ; Max = max(Max , k1+k2) ; tmpdp[k1+k2] = max(dp[node][k1+k2] , dp[node][k1] + dp[child][k2]) ; } } for(int i = 1 ; i <= Max ; ++i) dp[node][i] = max(dp[node][i] , tmpdp[i]) ; sz[node] += sz[child] ; } dp[node][1] = max(dp[node][1] , arr[node]) ; } int main() { ios_base::sync_with_stdio(0) ; cin.tie(0) ; cin>>n>>m ; int root ; for(int i = 1 ; i <= n ; ++i) { int par ; cin>>par>>arr[i] ; if(par == 0) root = i ; adj[par].push_back(i) ; } dfs(root) ; return cout<<dp[root][m]<<"\n" , 0 ; }

Compilation message (stderr)

biochips.cpp: In function 'int main()':
biochips.cpp:54:28: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
  return cout<<dp[root][m]<<"\n" , 0 ;
                            ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...