听灌多
  • 板块灌水区
  • 楼主ZeroPrince
  • 当前回复5
  • 已保存回复6
  • 发布时间2024/7/22 09:22
  • 上次更新2024/7/22 10:31:09
查看原帖
听灌多
852876
ZeroPrince楼主2024/7/22 09:22
#include <bits/stdc++.h>
using namespace std;
const int N = 310;
struct Edge
{
	int to, pre;
}e[N];
int head[N], tot;
void add(int u, int v)
{
	tot++; e[tot].to = v; e[tot].pre = head[u]; head[u] = tot;
}
int ft[N], score[N], dp[N][N];
int n, m;
void dfs(int u)
{
	dp[u][1] = score[u];
	//int i;
	for (int i = head[u]; ~i; i = e[i].pre);
	{
		int v = e[i].to;
		dfs(v);
		for (int k = m; k >= 1; k--)
		{
			for (int p = k - 1; p >= 1; p--)
			{
				dp[u][k] = max(dp[u][k], dp[u][k - p] + dp[v][p]);
				//dp[i][j] 表示 以 i 为根节点的子树,选择 k 个节点( k 门课程)
				//转移方程:dp[u][k]表示不选
				//dp[u][k-p] 表示要腾出空间选新的课程
				//dp[v][p] 表示选的新课程
			}
		}
	}
}
int main()
{
	scanf("%d%d", &n, &m); m++;
	for (int i = 1; i <= n; i++)
	{
		scanf("%d%d", &ft[i], &score[i]);
		add(ft[i], i);
	}
	dfs(0);
	printf("%d", dp[0][m]);
	return 0;
}

xdm帮我看看,我明明定义了i他却报错 [Error] 'i' was not declared in this scope

2024/7/22 09:22
加载中...