Pagini recente » Cod sursa (job #958771) | Cod sursa (job #1863442) | Cod sursa (job #963283) | Cod sursa (job #948442) | Cod sursa (job #2129365)
#include <fstream>
#include <vector>
#define DEF 16010
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector < int > L[DEF];
int n, sol[DEF], viz[DEF], Max = - 1 << 29;
void dfs (int nod) {
int s = 0;
viz[nod] = 1;
for (int i = 0; i < L[nod].size (); ++ i) {
if (viz[L[nod][i]] == 0) {
dfs (L[nod][i]);
if (sol[L[nod][i]] > 0)
s += sol[L[nod][i]];
}
}
sol[nod] += s;
}
int main () {
fin >> n;
for (int i = 1; i <= n; ++ i) {
fin >> sol[i];
}
for (int i = 1; i <= n - 1; ++ i) {
int x, y;
fin >> x >> y;
L[x].push_back (y);
L[y].push_back (x);
}
dfs (1);
for (int i = 1; i <= n; ++ i) {
Max = max (Max, sol[i]);
}
fout << Max;
return 0;
}