Pagini recente » Cod sursa (job #2469807) | Cod sursa (job #1415284) | Cod sursa (job #2254149) | Cod sursa (job #3272224) | Cod sursa (job #1280369)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
#define pb push_back
const int nmax = 16100;
int n,i,c[nmax],rs=-100000000;
vector<int> g[nmax];
void dfs(int k, int p=-1)
{
for (int i=0;i<g[k].size();i++)
if (g[k][i]!=p)
{
dfs(g[k][i],k);
if (c[g[k][i]]>0) c[k]+=c[g[k][i]];
}
rs=max(rs,c[k]);
}
int main()
{
cin >> n;
for (i=1;i<=n;i++)cin>>c[i];
for (i=1;i<n;i++)
{
int x,y;
cin >> x >> y;
g[x].pb(y);
g[y].pb(x);
}
dfs(1);
cout << rs;
return 0;
}