求调代码
查看原帖
求调代码
1066381
Eternal_rainbow楼主2025/8/5 13:25

哪里出问题了啊

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,a[6005],f[6005][2],r;
bool k[60005] = {false};
vector<int> e[6005];
void dfs(int u)
{
	f[u][0] = 0;
	f[u][1] = a[u];
	for (int v : e[u])
	{
		int i = e[u][v];
		dfs(i);
		f[u][1] += f[i][0];
		f[u][0] += max(f[i][1],f[i][0]);
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	for (int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	for (int i = 1;i <= n;i++)
	{
		int u,v;
		cin >> u >> v;
		k[v] = true; 
		e[u].push_back(v);
	}
	for (int i = 1;i <= n;i++)
	{
		if (k[i] == false)
		{
			r = i;
			break;
		}
	}
	dfs(r);
	cout << max(f[r][1],f[r][0]);
	return 0;
}

2025/8/5 13:25
加载中...