Pagini recente » Cod sursa (job #634413) | Cod sursa (job #1214650) | Cod sursa (job #1201557) | Cod sursa (job #2447409) | Cod sursa (job #3236364)
#include <fstream>
#include <vector>
#include <bitset>
#define dim 16002
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int n,dp[dim],x,y,root,sol;
bitset<dim>grad,viz;
vector<int>v[dim];
void dfs(int x){
viz[x]=1;
for(auto i: v[x])
if(!viz[i]){
dfs(i);
if(dp[i]>0)
dp[x]+=dp[i];
}
sol=max(sol,dp[x]);
}
int main()
{
cin>>n;
sol=-2e9;
for(int i=1;i<=n;i++)
cin>>dp[i];
for(int i=1;i<n;i++){
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
cout<<sol;
return 0;
}