Pagini recente » Cod sursa (job #1196238) | Cod sursa (job #375673) | Cod sursa (job #2880386) | Cod sursa (job #2660718)
#include <fstream>
#include <vector>
#include <cstring>
#include <deque>
#include <algorithm>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int N,V[16100], cap[16100];
long long dp[16100];
vector <int> viz(16010), L[16100];
deque <int> deq;
inline void scan() ;
long long mx=-1e9, ans;
inline void DupaPorumbei(int nod)
{
long long ans;
long long zero=0;
ans=V[nod]; viz[nod]=1;
for(auto nn:L[nod])
if(!viz[nn])
{
DupaPorumbei(nn);
ans=ans+max(zero,dp[nn]);
}
else ans=ans+max(zero,dp[nn]);
dp[nod]=ans;
mx=max(mx,ans);
}
int main()
{
scan();
DupaPorumbei(1);
cout<<mx<<'\n';
return 0;
}
inline void scan() {
cin>>N;
for(int i=1; i<=N; ++i)
cin>>V[i], ans=max(ans,1ll*V[i]);
for(int i=1,x,y; i<N; ++i) {
cin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
} }