Pagini recente » Cod sursa (job #1367688) | Cod sursa (job #1766708) | Cod sursa (job #854671) | Cod sursa (job #1563195) | Cod sursa (job #2050377)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector<int> G[16005];
int N;
int V[16005];
int rez=-(1<<30);
int dfs(int nod,int tata)
{
int sum=V[nod];
for(auto it:G[nod])
if(it!=tata)
{int tmp=dfs(it,nod);sum=max(sum,sum+tmp);}
rez=max(rez,sum);
return sum;
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
cin>>N;
for(int i=1;i<=N;i++)cin>>V[i];
for(int i=1;i<N;i++)
{
int x,y;
cin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
dfs(1,0);
cout<<rez;
return 0;
}