Pagini recente » Cod sursa (job #3182564) | Cod sursa (job #383652) | Cod sursa (job #2500751) | Cod sursa (job #1737898) | Cod sursa (job #3156739)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int dim=16005;
int n,a[dim],mx[dim];
bool viz[dim];
vector<int> G[dim];
void dfs(int nod){
viz[nod]=1;
mx[nod]=a[nod];
for(auto x:G[nod]){
if(!viz[x]){
dfs(x);
if(mx[x]>0){
mx[nod]+=mx[x];
}
}
}
}
int main (){
ifstream f("asmax.in");
ofstream g("asmax.out");
f>>n;
for(int i=1;i<=n;i++){
f>>a[i];
}
for(int i=1;i<n;i++){
int x,y;
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
dfs(1);
int sol=-2e9;
for(int i=1;i<=n;i++){
sol=max(sol,mx[i]);
}
g<<sol;
return 0;
}