社区讨论

为什么没有输出

P2014[CTSC1997] 选课参与者 3已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mhjcvr83
此快照首次捕获于
2025/11/04 00:30
4 个月前
此快照最后确认于
2025/11/04 00:30
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,dp[310][310];
struct node
{
	int v,w;
};
vector<node> g[310];
void dfs(int x)
{
	//if(g[x].size()==1&&x!=0) return;
	for(int i=1;i<=g[x].size();i++) 
	{
		//cout<<1;
		dfs(g[x][i].v);
	}
	for(int i=1;i<=g[x].size();i++)
	{
		for(int j=m;j>0;j--)
		{
			for(int k=0;k<j;k++)
			{
				//cout<<1;
				dp[x][j]=max(dp[x][j],dp[x][j-k]+dp[g[x][i].v][k]);
			}
			if(x==0) dp[x][j]=max(dp[x][j],dp[x][0]+dp[g[x][i].v][j]);
		}
	}
	return;
}
int main()
{
	cin>>n>>m;
	m++;
	for(int i=1;i<=n;i++)
	{
		int u,v;
		cin>>u>>v;
		node t1,t2;
		t1.v=i;
		t2.v=u;
		t1.w=v;
		t2.w=v;	
		g[u].push_back(t1);
		//g[i].push_back(t2);
		dp[i][1]=v;
		//cout<<1;
	}
	dfs(0);
	cout<<dp[0][m];
	return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...