# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
827698 | 2023-08-16T16:32:56 Z | MasterTaster | 바이오칩 (IZhO12_biochips) | C++14 | 556 ms | 413760 KB |
#include <bits/stdc++.h> #define ll long long #define pii pair<int, int> #define xx first #define yy second #define pb push_back #define MAXN 200010 #define MAXM 510 #define MAXX 1000000010LL using namespace std; int n, m, w[MAXN], gde[MAXN], r[MAXN], p, pp[MAXN]; int dp[MAXN][MAXM]; bool bio[MAXN]; vector<int> g[MAXN], svi; void dfs(int u) { bio[u]=true; svi.pb(u); gde[u]=svi.size()-1; for (int i=0; i<=m; i++) dp[gde[u]][i]=-MAXX; dp[gde[u]][1]=w[u]; dp[gde[u]][0]=0; for (auto v:g[u]) { if (!bio[v]) dfs(v); } r[u]=svi.size(); ///cout<<u<<":"<<endl; ///for (int i=0; i<=m; i++) cout<<dp[u][i]<<" "; ///cout<<endl; } int ident(int x) { ll pom=2872; pom^=26736; pom/=342; pom+=432; return x; } int main(){ cin>>n>>m; int koren=1; for (int i=1; i<=n; i++) { pp[i]=i; cin>>pp[i]>>w[i]; p=pp[i]; //pp[i]=ident(pp[i]); //p=ident(pp[i]); if (p==0) { koren=i; continue; } g[p].pb(i); g[i].pb(p); } dfs(koren); //for (int i=0; i<svi.size(); i++) cout<<svi[i]<<" "; //cout<<endl; for (int i=svi.size()-1; i>=0; i--) { for (int j=0; j<=m; j++) { if (j==0) { dp[i][j]=0; continue; } if (i!=svi.size()-1) dp[i][j]=max(dp[i][j], dp[i+1][j]); //else dp[i][1]=w[svi[i]]; if (r[svi[i]]<svi.size()) dp[i][j]=max(dp[i][j], dp[r[svi[i]]][j-1]+w[svi[i]]); //cout<<i<<" "<<j<<": "<<dp[i][j]<<endl; } } int ress=-1; for (int i=0; i<svi.size(); i++) ress=max(ress, dp[i][m]); cout<<ress; //cout<<dp[0][m]; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 4948 KB | Output is correct |
2 | Correct | 2 ms | 4948 KB | Output is correct |
3 | Correct | 3 ms | 5204 KB | Output is correct |
4 | Correct | 20 ms | 23264 KB | Output is correct |
5 | Correct | 26 ms | 25480 KB | Output is correct |
6 | Correct | 20 ms | 25488 KB | Output is correct |
7 | Correct | 360 ms | 308184 KB | Output is correct |
8 | Correct | 356 ms | 308224 KB | Output is correct |
9 | Correct | 462 ms | 374744 KB | Output is correct |
10 | Correct | 556 ms | 413760 KB | Output is correct |