Pagini recente » Cod sursa (job #1245086) | Cod sursa (job #77234) | Cod sursa (job #239646) | Cod sursa (job #900617) | Cod sursa (job #742105)
Cod sursa(job #742105)
#include<stdio.h>
#include<list>
#include<stdio.h>
#define dim 16010
using namespace std;
int i,x,n,V[dim],maxim=-2000000,y,Fr[dim];
FILE*f=fopen("asmax.in","r");
FILE*g=fopen("asmax.out","w");
list<int>L[dim];
void dfs(int z){
Fr[z]=1;
list<int>::iterator it;
for(it=L[z].begin();it!=L[z].end();it++){
if(!Fr[*it]){
dfs(*it);
if(V[*it]>0)
V[z]+=V[*it];
}
}
if(V[z]>maxim)
maxim=V[z];
}
int main(){
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&V[i]);
for(i=1;i<n;i++){
fscanf(f,"%d%d",&x,&y);
L[x].push_back(y);
L[y].push_back(x);
}
for(i=1;i<=n;i++){
if(!Fr[i]){
dfs(i);
}
}
fprintf(g,"%d",maxim);
return 0;
}