90pts求条
查看原帖
90pts求条
816736
gder114514楼主2025/8/31 18:38
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL f[6010][2];
int a[6010],m[6010];
vector<int> g[6005];
void dp(int u){
	for(int i=0;i<g[u].size();i++){
		dp(g[u][i]);
		f[u][1]=max(max(f[u][1],f[u][1]+f[g[u][i]][0]),f[g[u][i]][0]);
		f[u][0]=max(max(f[u][0],f[u][0]+f[g[u][i]][1]),max(f[g[u][i]][1],f[g[u][i]][0]));
	}
}
int main(){
	int n,rt;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&f[i][1]);
	for(int i=1,u,v;i<n;i++){
		scanf("%d%d",&v,&u);
		g[u].push_back(v);
		m[v]++;
	}
	for(int i=1;i<=n;i++){
		if(m[i]==0){
			rt=i;
			break;
		}
	}
	dp(rt);
	cout<<max(f[rt][0],f[rt][1]);
	return 0;
}

WA on#4:Wrong Answer.wrong answer Too long on line 1.

2025/8/31 18:38
加载中...