Pagini recente » Cod sursa (job #2678366) | Cod sursa (job #1356337) | Cod sursa (job #3225574) | Cod sursa (job #1656470) | Cod sursa (job #628268)
Cod sursa(job #628268)
#include <queue>
#include<stdio.h>
using namespace std;
int n,m,viz[16000],cost[16000],val[16000],best,valmax=-10001;
vector<int> l[16000];
void dfs(int x){
viz[x]=1;
val[x]=cost[x];
for(int i=0;i<l[x].size();i++)
if (viz[l[x][i]]==0){
dfs(l[x][i]);
if(val[l[x][i]]>0)
val[x]+=val[l[x][i]];
}
if(val[x]>valmax) valmax=val[x];
}
int main(){
FILE *f;
int i,x,y;
f=fopen("asmax.in","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
fscanf(f,"%d",&cost[i]);
for(i=0;i<n;i++){
fscanf(f,"%d %d",&x,&y);
l[x-1].push_back(y-1);
l[y-1].push_back(x-1);
}
fclose(f);
dfs(0);
f=fopen("asmax.out","w");
fprintf(f,"%d\n",valmax);
fclose(f);
return 0;
}