Pagini recente » Cod sursa (job #1777581) | Cod sursa (job #178731) | Cod sursa (job #3158936) | Cod sursa (job #2458131) | Cod sursa (job #1034906)
#include <cstdio>
#include <vector>
using namespace std;
FILE*f=fopen("asmax.in","r");
FILE*h=fopen("asmax.out","w");
vector<int> v[16001];
int n,d[16001],m=-2000000000;
bool p[16001];
void dfs ( int x ){
p[x]=1;
for ( int i=0;i<v[x].size();++i ){
int y=v[x][i];
if ( p[y]==0 ){
dfs(y);
if ( d[y]>0 ){
d[x]+=d[y];
if ( d[x]>m )m=d[x];
}
}
}
}
int main()
{
fscanf(f,"%d",&n);
for ( int i=1;i<=n;++i )
fscanf(f,"%d",&d[i]);
for ( int i=1;i<n;++i ){
int a,b;
fscanf(f,"%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
fprintf(h,"\n%d",m);
return 0;
}