Pagini recente » Cod sursa (job #901178) | Cod sursa (job #1398997) | Cod sursa (job #510371) | Cod sursa (job #564775) | Cod sursa (job #544702)
Cod sursa(job #544702)
#include <stdio.h>
#include <vector>
#define N 16001
using namespace std;
long n,A[N],VIZ[N];
long a,b,smax;
FILE *f,*g;
vector <long> V[N];
void citire()
{
long i;
fscanf(f,"%ld",&n);
for (i=1;i<=n;++i)
fscanf(f,"%ld",&A[i]);
for (i=1;i<n;++i)
{
fscanf(f,"%ld %ld",&a,&b);
V[a].push_back(b);
V[b].push_back(a);
}
}
void df(long v)
{
long i;
VIZ[v]=1;
for (i=0;i<V[v].size();++i)
if (!VIZ[V[v][i]])
{
df(V[v][i]);
if (A[V[v][i]]>0)
A[v]+=A[V[v][i]];
}
if (A[v]>smax)
smax=A[v];
}
int main()
{
f=fopen("asmax.in","r");
g=fopen("asmax.out","w");
smax=-(1<<30);
citire();
df(1);
fprintf(g,"%ld",smax);
fclose(f);
fclose(g);
return 0;
}