Pagini recente » Cod sursa (job #2353692) | Cod sursa (job #1274762) | Cod sursa (job #3004739) | Cod sursa (job #184237) | Cod sursa (job #2438558)
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
#define Inf -1005
using namespace std;
int n, val[16005], i, j, out=Inf;
vector<int> graph[16005];
bitset<16005> check;
void dfs(int node);
int main()
{
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; ++i) scanf("%d", &val[i]);
for(i=1; i<n; ++i){
int x, y;
scanf("%d%d", &x, &y);
graph[x].push_back(y);
graph[y].push_back(x);
}
dfs(1);
printf("%d", out);
return 0;
}
void dfs(int node){
check[node]=true;
for(auto i:graph[node]){
if(check[i]==false){
dfs(i);
val[node]+=max(val[i], 0);
}
}
out=max(out, val[node]);
return;
}