Pagini recente » Cod sursa (job #1847484) | Cod sursa (job #1270276) | Cod sursa (job #819497) | Cod sursa (job #1173895) | Cod sursa (job #3189013)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
vector<vector<int>> v;
vector<int> a;
int max1;
void dfs(int parinte,int nod){
int i;
for(i=0;i<v[nod].size();i++){
if(v[nod][i]!=parinte){
dfs(nod,v[nod][i]);
if(a[v[nod][i]]>=0)
a[nod]+=a[v[nod][i]];
}
}
max1=max(max1,a[nod]);
}
int main()
{
max1=-1e9;
int n,i,a1,b;
cin>>n;
v.resize(n+1);a.resize(n+1);
for(i=1;i<=n;i++) cin>>a[i];
for(i=0;i<n-1;i++){
cin>>a1>>b;
v[a1].push_back(b);
v[b].push_back(a1);
}
dfs(-1,1);
cout<<max1;
return 0;
}