Pagini recente » Cod sursa (job #1192668) | Cod sursa (job #880243) | Cod sursa (job #1872850) | Cod sursa (job #2700215) | Cod sursa (job #1865165)
#include <fstream>
#include <vector>
#define DIM 16002
using namespace std;
vector<int> L[DIM];
int u[DIM], v[DIM], d[DIM];
int sol, n, x, y;
void dfs(int nod) {
u[nod] = 1;
d[nod] = v[nod];
for (int i=0;i<L[nod].size();i++) {
int fiu = L[nod][i];
if (u[fiu] == 0) {
dfs(fiu);
if (d[fiu] > 0)
d[nod] += d[fiu];
}
}
sol = max(sol, d[nod]);
}
int main () {
ifstream fin ("asmax.in");
ofstream fout("asmax.out");
fin>>n;
for (int i=1;i<=n;i++) {
fin >>v[i];
sol = max(sol, v[i]);
}
for (int i=1;i<n;i++) {
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1);
fout<<sol;
return 0;
}