第五个WA了,求助
查看原帖
第五个WA了,求助
332123
LHLeisus楼主2021/11/30 18:20
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=6000+10;
int n,r[N],f[N][2],ff[N];
vector<int>tree[N];
void dfs(int u)
{
	f[u][0]=0;
	f[u][1]=r[u];
	for(int i=0;i<tree[u].size();i++)
	{
		int v=tree[u][i];
		dfs(v);
		f[u][0]+=max(f[v][1],f[v][0]);
		f[u][1]+=f[v][0];
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>r[i],ff[i]=-1;
	for(int i=1;i<=n;i++)
	{
		int a,b;
		cin>>a>>b;
		tree[b].push_back(a);
		ff[a]=b;
	}
	int ft=1;
	while(ff[ft]!=-1) ft=ff[ft];
	dfs(ft);
	cout<<max(f[ft][1],f[ft][0]);
	return 0;
}
2021/11/30 18:20
加载中...