Pagini recente » Cod sursa (job #2557866) | Cod sursa (job #1878254) | Cod sursa (job #1642633) | Cod sursa (job #720781) | Cod sursa (job #2235877)
#include <bits/stdc++.h>
using namespace std;
const int N=16000+5;
int n,val[N],ans=0;
bool viz[N];
vector<int>v[N];
int lol=-(1<<30);
int slove(int nod)
{
viz[nod]=1;
int ans=val[nod];
for(auto nou:v[nod])
if(viz[nou]==0)
{
int x=slove(nou);
if(x>0)
ans+=x;
}
lol=max(lol,ans);
return ans;
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
cin>>val[i];
for(int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
slove(1);
cout<<lol<<"\n";
return 0;
}