Pagini recente » Cod sursa (job #3181724) | Cod sursa (job #492112) | Cod sursa (job #2787154) | Cod sursa (job #612154) | Cod sursa (job #21439)
Cod sursa(job #21439)
#include <cstdio>
#include <vector>
using namespace std;
#define PB push_back
const int NMAX = 1 << 14;
int N, rez = -NMAX;
int A[NMAX];
vector <int> G[NMAX];
void read() {
FILE *fin = fopen("asmax.in", "rt");
int i, u, v;
fscanf(fin, " %d", &N);
for (i = 1; i <= N; ++i)
fscanf(fin, " %d", A + i);
for (i = 1; i < N; ++i) {
fscanf(fin, " %d %d", &u, &v);
G[u].PB(v);
G[v].PB(u);
}
fclose(fin);
}
int DFS(int k, int t) {
int s, r;
unsigned i;
s = 0;
for (i = 0; i < G[k].size(); ++i)
if (G[k][i] != t) {
r = DFS(G[k][i], k);
if (r > 0) s += r;
}
s += A[k];
rez >?= s;
return s;
}
void write() {
FILE *fout = fopen("asmax.out", "wt");
fprintf(fout, "%d\n", rez);
fclose(fout);
}
int main() {
read();
DFS(1, 0);
write();
return 0;
}