Pagini recente » Cod sursa (job #373685) | Cod sursa (job #518652) | Cod sursa (job #1048282) | Rating Postolachi Nicu (nicushor) | Cod sursa (job #1315404)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector< vector<int> > a;
vector<bool> v;
vector<int> d;
int sol;
void dfs(int x)
{
v[x]=true;
for(auto i: a[x])
if(v[i]==false)
{
dfs(i);
if(d[i]>0)d[x]+=d[i];
sol=max(d[x],sol);
}
}
int main()
{
int n,x,y;
in>>n;
a=vector< vector<int> >(n+1);
d=vector<int>(n+1);
v=vector<bool>(n+1);
for(int i=1;i<=n;i++)in>>d[i];
for(int i=1;i<n;i++)
{
in>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
sol=numeric_limits<int>::min();
dfs(1);
out<<sol;
return 0;
}