Pagini recente » Cod sursa (job #2408361) | Cod sursa (job #888211) | Cod sursa (job #3273084) | Cod sursa (job #721478) | Cod sursa (job #601222)
Cod sursa(job #601222)
#include <iostream>
#include <vector>
using namespace std;
const int NMAX = 16001;
bool ok[NMAX];
vector<int> G[NMAX];
int n , v[NMAX] , s[NMAX] , ans = -(int)2e9;
void dfs(int node)
{
ok[node] = true;
s[node] = v[node];
for(int i=0;i<(int)G[node].size();++i)
if(ok[G[node][i]]==false)
{
dfs(G[node][i]);
s[node]=max(s[node],s[node] + s[G[node][i]]);
}
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&v[i]);
for(int i=1,x,y;i<n;++i)
scanf("%d %d",&x,&y) , G[x].push_back(y) , G[y].push_back(x);
dfs(1);
for(int i=1;i<=n;++i)
ans = max(ans,s[i]);
printf("%d",ans);
return 0;
}