Pagini recente » Cod sursa (job #1415674) | Cod sursa (job #3218200) | Cod sursa (job #1739140) | Cod sursa (job #865775) | Cod sursa (job #1895152)
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
vector<int> a[16001];
int val[16001],N,x,y;
bool vazut[16001];
int rezolva(int u)
{
int suma = 0,x;
vazut[u] = 1;
for(int j = 0;j<a[u].size();j++)
if(vazut[a[u][j]] == 0)
{
x = rezolva(a[u][j]);
if(x>0)
suma =suma + x;
}
suma +=val[u];
return suma;
}
int main()
{
FILE *f = fopen("asmax.in","r");
FILE *g = fopen("asmax.out","w");
fscanf(f,"%d",&N);
for(int i = 1;i<=N;i++)
fscanf(f,"%d",&val[i]);
for(int i = 0;i<N-1;i++)
{
fscanf(f,"%d%d",&x,&y);
a[x].push_back(y);
a[y].push_back(x);
}
fprintf(g,"%d",rezolva(1));
fclose(f);
fclose(g);
return 0;
}