Pagini recente » Cod sursa (job #2329068) | Cod sursa (job #2309062) | Cod sursa (job #647718) | Cod sursa (job #1957040) | Cod sursa (job #503857)
Cod sursa(job #503857)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
FILE *f=fopen("asmax.in","r");
FILE *g=fopen("asmax.out","w");
vector <int> a[16001];
int cost[16001],N,x,y,sol,viz[16001];
void df(int v){
viz[v]=1;
for(int i=0;i<a[v].size();i++)
if(!viz[a[v][i]]){
df(a[v][i]);
if(cost[a[v][i]] > 0)
cost[v]+=cost[a[v][i]];
if(cost[v]>sol)
sol=cost[v];
}
}
int main(){
sol=-2000000000;
fscanf(f,"%d",&N);
for(int i=1;i<=N;++i)
fscanf(f,"%d",&cost[i]);
for(int i=1;i<N;++i)
fscanf(f,"%d%d",&x,&y),a[x].push_back(y),a[y].push_back(x);
df(1);
fprintf(g,"%d",sol);
return 0;
}