Pagini recente » Cod sursa (job #1502258) | Cod sursa (job #3258129) | Cod sursa (job #294006) | Cod sursa (job #304664) | Cod sursa (job #174484)
Cod sursa(job #174484)
#include <cstdio>
#define DIM 15005
using namespace std;
typedef struct Nod {
int vf;
Nod* next;
} NOD, *PNOD;
PNOD L[DIM];
int N, A[DIM], S[DIM], sel[DIM];
void Add(int x, int y)
{
PNOD p = new NOD;
p->vf = y;
p->next = L[x];
L[x] = p;
}
int DF(int nod)
{
sel[nod] = 1;
S[nod] = A[nod];
int sum;
for (PNOD p = L[nod]; p; p = p->next)
if (!sel[p->vf])
{
sum = DF(p->vf);
S[nod] = sum > 0 ? S[nod] + sum : S[nod];
}
return S[nod];
}
int main()
{
FILE *fin = fopen("asmax.in", "r");
FILE *fout = fopen("asmax.out", "w");
fscanf(fin, "%d", &N);
for (int i = 1; i <= N; i++)
fscanf(fin, "%d", A + i);
int x, y;
for (int i = 1; i < N; i++)
{
fscanf(fin, "%d%d", &x, &y);
Add(x, y);
Add(y, x);
}
int sum = DF(1);
for (int i = 2; i <= N; i++)
sum = sum < S[i] ? S[i] : sum;
fprintf(fout, "%d\n", sum);
fclose(fin);
fclose(fout);
return 0;
}