Submission #216726

#TimeUsernameProblemLanguageResultExecution timeMemory
216726MohamedAhmed04Biochips (IZhO12_biochips)C++14
100 / 100
1773 ms410104 KiB
#include <bits/stdc++.h> using namespace std ; const int MAX = 2e5 + 10 , MAXM = 502 ; int arr[MAX] , in[MAX] , out[MAX] , id[MAX] ; int n , m ; vector< vector<int> >adj(MAX) ; int tim = 0 ; int dp[MAX][MAXM] ; void dfs(int node) { in[node] = ++tim ; id[tim] = node ; for(auto &child : adj[node]) dfs(child) ; out[node] = tim ; } int solve(int idx , int cnt) { if(cnt == m) return 0 ; if(idx == n+1) return -1e7 ; int &ret = dp[idx][cnt] ; if(ret != -1) return ret ; ret = solve(idx+1 , cnt) ; ret = max(ret , solve(out[id[idx]]+1 , cnt+1) + arr[id[idx]]) ; return ret ; } int main() { memset(dp , -1 , sizeof(dp)) ; 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) root = i ; else adj[par].push_back(i) ; } dfs(root) ; return cout<<solve(1 , 0)<<"\n" , 0 ; }

Compilation message (stderr)

biochips.cpp: In function 'int main()':
biochips.cpp:55:5: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
  dfs(root) ;
  ~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...