[문제 해결] P2014 수강신청(트리 DP+ 토폴로지)
3044 단어 [동적 기획] Tree[동적 기획]
#include
using namespace std;
struct node {
int num;
int fa;
int son;
}p[400];
queue < int > q;
int f[400][400];
int n,m;
int main() {
int i,j,k;
scanf("%d%d",&n,&m);
m++;
p[0].fa=-1;
for(i=1;i<=n;i++) {
scanf("%d%d",&p[i].fa,&p[i].num);
for(j=1;j<=m;j++)
f[i][j]=p[i].num;
p[p[i].fa].son++;
}
for(i=1;i<=n;i++)
if(p[i].son==0)
q.push(i);
while(!q.empty()) {
int x=q.front();
q.pop();
int fa=p[x].fa;
if(fa==-1) break;
p[fa].son--;
if(p[fa].son==0) {q.push(fa);}
for(i=m;i>=0;i--) {
for(j=i-1;j>=0;j--) {
f[fa][i]=max(f[fa][i-j]+f[x][j],f[fa][i]);
}
}
}
printf("%d",f[0][m]);
return 0;
}
by:Chlience
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[문제풀이] BZOJ 1010 장난감 포장 Toydp[j]+(f[i]−f[j]−c)2≤dp[k]+(f[i]−f[j]−c)2 d p [ j ] + ( f [ i ] − f [ j ] − c ) 2 ≤ d p [ k ] + ( f [ i ] − f [ j ] − c ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.