Pagini recente » Cod sursa (job #663081) | Cod sursa (job #3230290) | Cod sursa (job #2633400) | Cod sursa (job #408408) | Cod sursa (job #1360847)
#include<bits/stdc++.h>
using namespace std;
typedef vector < int >::iterator IT;
vector < vector < int > > arb(16001);
int N,v[16002],MAX;bool viz[16005];
void read()
{
freopen("asmax.in","r",stdin);
scanf("%d",&N);
for(int i=1;i<=N;++i)
scanf("%d",&v[i]);
for(int i=1;i!=N;++i){
int x,y;
scanf("%d%d",&x,&y);
arb[x].push_back(y);
arb[y].push_back(x);
}
}
int dfs(int X)
{
int max_temp=v[X];
viz[X]=1;
for(IT it=arb[X].begin();it!=arb[X].end();++it)
if(!viz[*it])
max_temp=max(max_temp,max_temp+dfs(*it));
MAX=max(MAX,max_temp);
return max_temp;
}
int main()
{
read();
MAX=v[1];
dfs(1);
fprintf(fopen("asmax.out","w"),"%d",MAX);
return 0;
}