Pagini recente » Cod sursa (job #756457) | Cod sursa (job #785290) | Cod sursa (job #1980087) | Cod sursa (job #2616370) | Cod sursa (job #1887453)
#include <fstream>
#include <cstdio>
#include <vector>
#define Nmax 16001
using namespace std;
ofstream g("asmax.out");
int n,c[Nmax],mx;
bool uz[Nmax];
vector<int> V[Nmax];
int dfs(int nod)
{
int nr=c[nod];
uz[nod] = 1;
for (int i=0;i<V[nod].size();i++)
{
if (!uz[V[nod][i]])
{
int x = dfs(V[nod][i]);
if (x>0)
nr+=x;
}
}
if (nr>mx)
mx=nr;
return nr;
}
int main()
{
freopen("asmax.in","r",stdin);
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&c[i]);
for (int i=1;i<n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
V[x].push_back(y);
V[y].push_back(x);
}
dfs(1);
g<<mx;
return 0;
}