求大佬差错 写了个奇怪的东西
查看原帖
求大佬差错 写了个奇怪的东西
233127
千叶の黑猫楼主2020/6/27 11:33
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> t[1324];
int dp[123456],p[123456];
bool f[123456]; 
int n,m,a,b;
void dfs(int k,int sum,int c){
	if(c>m) return ;
	for(int j=m;j>=c;--j) dp[j]=max(dp[j-c]+sum,dp[j]);
	for(int i=0;i<t[k].size();++i){
	dfs(t[k][i],sum+p[t[k][i]],c+1);
	}
}
int main(){
  cin>>n>>m;
   for(int i=1;i<=n;++i){
   	scanf("%d%d",&a,&b);
   	if(a!=0){ f[i]=1;t[a].push_back(i);}
	   p[i]=b;
   }
   for(int i=1;i<=n;++i){
        if(f[i]==0)
    	dfs(i,p[i],1);
   }
   cout<<dp[m];
}
2020/6/27 11:33
加载中...