Pagini recente » Cod sursa (job #2214793) | Cod sursa (job #807668) | Cod sursa (job #2344420) | Cod sursa (job #2606487) | Cod sursa (job #2991081)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, v[16001], s[16001], res = -(1 << 28), n1, n2;
vector<int> c[16001];
vector<bool> b(16001);
void dfs(int x){
b[x] = true, s[x] = v[x];
for(int i = 0 ; i < c[x].size(); i++){
if(!b[c[x][i]]){
dfs(c[x][i]);
s[x] = max(s[x], s[x] + s[c[x][i]]);
}
}
}
int main(){
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
for(int i = 1; i < n; i++){
fin >> n1 >> n2;
c[n1].push_back(n2);
c[n2].push_back(n1);
}
dfs(1);
for(int i = 1; i <= n; i++)
res = max(res, s[i]);
fout << res;
return 0;
}