Pagini recente » Cod sursa (job #1622781) | Cod sursa (job #2731060) | Cod sursa (job #272727) | Cod sursa (job #699574) | Cod sursa (job #979298)
Cod sursa(job #979298)
#include<fstream>
#define dim 16009
#define f scanf
#define g printf
using namespace std;
int a[dim][100],n,v[dim],x,y,s[dim],viz[dim];
int dfs(int nod)
{
int val;
viz[nod]=1;
s[nod]=v[nod];
for(int i=1;i<=a[nod][0];i++)
if(!viz[a[nod][i]])
{
val=dfs(a[nod][i]);
if(val>0)
s[nod]=s[nod]+val;
}
return s[nod];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
f("%d",&n);
for(int i=1;i<=n;i++)
f("%d",&v[i]);
for(int i=1;i<n;i++)
{
f("%d%d",&x,&y);
a[x][++a[x][0]]=y;
a[y][++a[y][0]]=x;
}
dfs(1);
int max1=s[1];
max1=0;
for(int i=1;i<=n;i++)
if(max1<s[i])
max1=s[i];
g("%d",max1);
}