Pagini recente » Cod sursa (job #1128360) | Cod sursa (job #2344963) | Cod sursa (job #921698) | Cod sursa (job #3150283) | Cod sursa (job #1584327)
#include <cstdio>
#define nmax 16002
#include <queue>
#include <algorithm>
using namespace std;
int N,d[nmax],v[nmax],rez=0,s[nmax];
bool t[nmax][nmax];
queue <int> Q;
void dfs(int x){
int i;
for(i =x + 1;i <= N;++i)
if(t[i][x] == 1){
dfs(i);
s[x] = max(s[x],s[x]+s[i]);
}
rez = max(rez,s[x]);
}
int main(){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d ",&N);
int i,x,y;
for(i = 1;i <= N;++i){
scanf("%d ",&v[i]);
s[i] = v[i];
}
for(i=1;i < N;++i){
scanf("%d %d ",&x,&y);
t[x][y] = t[y][x] = 1;
d[x]++;d[y]++;
}
dfs(1);
printf("%d\n",rez);
return 0;
}