Pagini recente » Cod sursa (job #1120921) | Cod sursa (job #2317229) | Cod sursa (job #1836477) | Cod sursa (job #500715) | Cod sursa (job #2205170)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int sm;
vector <int> v[16002];
int p[16002];
bool viz[16002];
int dfs(int x){
int sc=p[x],aux,mx=-999999;
viz[x]=true;
int y;
for(int i=0;i<v[x].size();i++){
y=v[x][i];
if(!viz[y]){
aux=dfs(y);
if(aux>mx){
mx=aux;
}
if(aux>0){
sc+=aux;
}
}
}
return max(sc,mx);
}
int main()
{
int n,x1,x2;
fin>>n;
for(int i=1;i<=n;i++){
fin>>p[i];
}
for(int i=0;i<n;i++){
fin>>x1>>x2;
v[x1].push_back(x2);
v[x2].push_back(x1);
}
fout<<dfs(1);
return 0;
}