Submission #636370

#TimeUsernameProblemLanguageResultExecution timeMemory
636370Ez0zIOVgTsSgTBiochips (IZhO12_biochips)C++14
100 / 100
373 ms400248 KiB
#include<bits/stdc++.h> using namespace std; int n, m, root, val[200002]; vector<int>v[200002]; int dp[200002][502], val2[200002], st[200002], sf[200002], poz; int qq = 0; void dfs(int nod) { ++poz; st[nod] = poz; val2[poz] = val[nod]; dp[poz][1] = val[nod]; for(int i = 0; i < v[nod].size(); ++i) { int vecin = v[nod][i]; dfs(vecin); } sf[st[nod]] = poz; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i = 1; i <= n; ++i) { int parent; cin >> parent; cin >> val[i]; if(parent == 0) root = i; else v[parent].push_back(i); } dfs(root); int ans = 0; for(int i = poz; i >= 1; --i) for(int j = 1; j <= m; ++j) { if(i + 1 <= poz) dp[i][j] = max(dp[i][j], dp[i+1][j]); if(sf[i] + 1 <= poz) dp[i][j] = max(dp[i][j] , dp[sf[i] + 1][j-1] + val2[i]); if(j == m) ans = max(ans, dp[i][j]); } cout << ans; return 0; }

Compilation message (stderr)

biochips.cpp: In function 'void dfs(int)':
biochips.cpp:13:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |      for(int i = 0; i < v[nod].size(); ++i)
      |                     ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...