#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