| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1299984 | azik21 | 바이오칩 (IZhO12_biochips) | C++20 | 2 ms | 576 KiB |
#include<iostream>
// #include<bits/stdc++.h>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
#define pb push_back
#define int long long
#define all(v) (v).begin() , (v).end()
using namespace std;
const int inf = 1e17 , N = 5e3 + 4;
int n , m ;
int x[N];
int dp[N][505];
vector<int>g[N];
void dfs(int v , int p){
for(auto it:g[v]){
if(it==p)continue;
dfs(it , v);
for(int k =1 ; k <= m ; k++){
for(int i= 1; i + k <= m ;i++){
dp[v][i+k] = max(dp[v][i] + dp[it][k] , dp[v][i+k]);
}
}
}
dp[v][1] = max(x[v] , dp[v][1]);
}
signed main(){
freopen("d.in" , "r" , stdin);
freopen("d.out" , "w" , stdout);
ios_base::sync_with_stdio(0) , cin.tie(0);
cin >> n >> m ;
int pr = 0;
for(int i= 1 ; i <= n ; i++){
int p ;
cin >> p >> x[i] ;
if(p == 0 )pr = i ;
g[p].pb(i);
}
dfs(pr ,0 );
cout << dp[pr][m];
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
