제출 #1315722

#제출 시각아이디문제언어결과실행 시간메모리
1315722Jawad_Akbar_JJ바이오칩 (IZhO12_biochips)C++20
100 / 100
221 ms6844 KiB
#include <iostream> #include <vector> using namespace std; const int N = 1<<18; vector<int> nei[N]; int dp[N][2], ch[N], cur, a[N], mem[N]; void dfs(int u){ ch[u] = 1; for (int i : nei[u]) dfs(i), ch[u] += ch[i]; a[++cur] = u; } int main(){ int n, m; cin>>n>>m; for (int i=1, p;i<=n;i++){ cin>>p>>mem[i]; nei[p].push_back(i); } dfs(nei[0][0]); for (int i=0;i<N;i++) dp[i][1] = -1e9; for (int j=1;j<=m;j++){ for (int i=1;i<=n;i++) dp[i][1] = max(dp[i-1][1], dp[i - ch[a[i]]][0] + mem[a[i]]); for (int i=0;i<=n;i++) dp[i][0] = dp[i][1], dp[i][1] = -1e9; } cout<<dp[n][0]<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...