Pagini recente » Cod sursa (job #1876522) | Cod sursa (job #1915227) | Cod sursa (job #139420) | Cod sursa (job #1894681) | Cod sursa (job #1109755)
#include <stdio.h>
#include <vector>
#define NMAX 16005
using namespace std;
vector<int> v[NMAX];
int N, val[NMAX], viz[NMAX], maxim;
void dfs(int x){
viz[x] = 1;
int y;
for (int i = 0; i < v[x].size(); i++){
y = v[x][i];
if(viz[y] == 0){
dfs(y);
if(val[y] > 0){
val[x] += val[y];
if(val[x] > maxim){
maxim = val[x];
}
}
}
}
}
int main()
{
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
scanf("%d", &N);
int i, a, b;
for (i = 1; i <= N; i++){
scanf("%d", &val[i]);
}
for(i = 1; i < N; i++){
scanf("%d%d", &a, &b);
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
printf("%d", maxim);
return 0;
}