Pagini recente » Cod sursa (job #824989) | Cod sursa (job #284630) | Cod sursa (job #2275127) | Cod sursa (job #2597957) | Cod sursa (job #2555970)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int n,c[16005],d[16005],ans,x,y;
vector<int> v[16005];
void dfs(int nod,int t)
{
d[nod]=c[nod];
for(auto it:v[nod])
if(it!=t)
{
dfs(it,nod);
if(d[nod]+d[it]>d[nod]) d[nod]+=d[it];
}
ans=max(ans,d[nod]);
}
int main()
{
in>>n;
for(int i=1;i<=n;i++) in>>c[i];
for(int i=1;i<n;i++)
{
in>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
ans=-1e9;
dfs(1,0);
out<<ans;
return 0;
}