Pagini recente » Cod sursa (job #650242) | Cod sursa (job #1813140) | Cod sursa (job #2159835) | Cod sursa (job #2757837) | Cod sursa (job #2312003)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, x[16001], a, b, i, maxim, s[16001];
vector<int> v[16001];
void dfs(int nod, int tata){
s[nod] = x[nod];
for(int j = 0;j<v[nod].size();j++){
int crt = v[nod][j];
if(crt != tata){
dfs(crt, nod);
if(s[crt] > 0)
s[nod] += s[crt];
}
}
}
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>x[i];
for(i=1;i<n;i++){
fin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1, 0);
for(i=1;i<=n;i++)
if(s[i] > maxim)
maxim = s[i];
fout<<maxim;
return 0;
}