Pagini recente » Profil anny95 | Cod sursa (job #2013558) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2954076)
#include <bits/stdc++.h>
using namespace std;
vector<int> graf[16005];
int vf[16005];
int b[16005];
int s[16000];
int maxim = -1e9;
void dfs(int nod){
s[nod] = b[nod];
vf[nod] = 1;
for(auto it: graf[nod]){
if(vf[it] == 0){
dfs(it);
if(s[it] > 0){ /// il vom adauga la o subsolutie
s[nod] += s[it];
}
}
}
maxim = max(maxim, s[nod]);
}
int main(void){
ofstream cout("asmax.out");
ifstream cin("asmax.in");
int n,m;
cin >> n;
for(int i = 1;i<=n;i++){
cin >> b[i];
}
for(int i = 1;i<=n-1;i++){
int a,b;
cin >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
dfs(1);
cout << maxim;
}