Pagini recente » Cod sursa (job #1625480) | Cod sursa (job #1877214) | Cod sursa (job #1428140) | Cod sursa (job #1943875) | Cod sursa (job #1991260)
#include <cstdio>
#include <vector>
using namespace std;
int n, Sol = -1000000000, val[16002];
vector <int> v[16002];
bool f[16002];
inline void dfs(int nod){
f[nod] = 1;
for(vector <int> :: iterator it = v[nod].begin() ; it != v[nod].end() ; ++it){
if(f[*it] == 1) continue ;
val[nod] += val[*it];
dfs(*it);
}
if(val[nod] > Sol) Sol = val[nod];
}
int main()
{
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n ; ++i)
scanf("%d", &val[i]);
for(int i = 1; i < n ; ++i){
int x, y;
scanf("%d%d", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
printf("%d", Sol);
return 0;
}