社区讨论

萌新求助树形背包入门题“选课”过不了样例码风良好清晰

P2014[CTSC1997] 选课参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@lo8eseyx
此快照首次捕获于
2023/10/27 17:26
2 年前
此快照最后确认于
2023/10/27 17:26
2 年前
查看原帖
CPP
#include <bits/stdc++.h> 
#define MAXN 305
using namespace std;
vector <int> G[MAXN];
int n,m,f[MAXN][MAXN];
inline void dfs(int u)
{
	for(int i=1;i<G[u].size();i++)
		dfs(G[u][i]);
	for(int i=1;i<G[u].size();i++)
		for(int j=m,v=G[u][i];j>0;--j)
			for(int k=0;k<j;++k)
				f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> n >> m;
	++m;
	for(register int i=1;i<=n;i++)
	{
		int fa;
		cin >> fa >> f[i][1];
		G[fa].push_back(i);
		G[i].push_back(fa);
	}
	dfs(0);
	cout << f[0][m] << endl;
	return 0;
}

回复

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

正在加载回复...