Pagini recente » Cod sursa (job #1125882) | Cod sursa (job #2465134) | Clasament tabaraichb | Cod sursa (job #2917163) | Cod sursa (job #658053)
Cod sursa(job #658053)
#include<cstdio>
#include<vector>
#define lim 16001
using namespace std;
int V[lim],n,x,y,maxu,viz[lim],suma[lim],i;
vector<int>G[lim];
void dfs(int nod){
viz[nod]=1;
int v;
for(int i=0;i<G[nod].size();++i){
v=G[nod][i];
if(!viz[v] ){
dfs(v);
if(V[v]>0)
suma[nod]+=V[v];
}
}
if(suma[nod]+V[nod]>maxu)
maxu=suma[nod]+V[nod];
}
int main (){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
maxu=-10000;
for(i=1;i<=n;i++)
scanf("%d",&V[i]);
for(i=1;i<=n;i++){
scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
dfs(1);
printf("%d",maxu);
return 0;
}