Pagini recente » Cod sursa (job #2126000) | Cod sursa (job #2554301) | Cod sursa (job #2613855) | Cod sursa (job #1249669) | Cod sursa (job #3154882)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
int v[16001];
vector <vector <int>> l(16001);
int s[16001];
void dfs(int nod, int f){
s[nod] = v[nod];
for(int i = 0; i < l[nod].size(); i++){
if(l[nod][i] == f) continue;
dfs( l[nod][i], nod );
if(s[ l[nod][i] ] > 0) s[nod] += s[ l[nod][i] ];
}
}
int main(){
cin.tie(0);ios::sync_with_stdio(0);
//1.
//2.
fin >> n;
//3.
for(int i = 1; i <= n; i++) fin >> v[i];
for(int i = 0; i < n - 1; i++){
int a, b; fin >> a >> b;
l[a].push_back(b);
l[b].push_back(a);
}
dfs(1, 0);
int maxi = 0;
for(int i = 1; i <= n; i++) maxi = max(maxi, s[i]);
fout << maxi << endl;
return 0;
}