样例都没过,提交拿到90pts
#include <bits/stdc++.h>
#include <random>
using namespace std;
#define ll long long
#define inf 0x7fffffff
ll f[16010][3],a[16010],n;
vector<ll> G[16010];
inline void dfs(ll u,ll fa) {
for (ll i=0;i<G[u].size();++i) {
ll v=G[u][i];
if (v==fa) continue;
dfs(v,u);
f[u][1]+=max(f[v][1],f[v][0]);
}
}
signed main () {
std::ios::sync_with_stdio(false);
cin>>n;
for (ll i=1;i<=n;++i) {
cin>>a[i];
f[i][1]=a[i];
}
for (ll i=1;i<n;++i) {
ll k,b;
cin>>k>>b;
G[k].push_back(b);
G[b].push_back(k);
}
dfs(1,0);
cout<<f[1][1];
return 0;
}