Pagini recente » Cod sursa (job #1608615) | Cod sursa (job #2794592) | Cod sursa (job #1155970) | Cod sursa (job #811372) | Cod sursa (job #2453879)
#include <fstream>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
long n, t[16384], dp[16384], v[16384], val[16384], maxim = -2000000000;
struct nod{
long nr;
nod *next;
};
nod*graf[16384];
void add(int x, int y) {
nod *p = new nod;
p->nr = y;
p->next = graf[x];
graf[x] = p;
}
void dfs(int x) {
v[x] = 1;
dp[x] = val[x];
for(nod *p = graf[x]; p ;p = p->next)
if(!v[p->nr]) {
dfs(p->nr);
if(dp[p->nr] > 0)
dp[x] += dp[p->nr];
}
if(dp[x] > maxim)
maxim = dp[x];
}
int main() {
f >> n;
for(int i = 1; i <= n; i++)
f >> val[i];
for(int i = 1; i < n; i++) {
int x, y;
f >> x >> y;
add(x, y);
add(y, x);
}
dfs(1);
g << dp[1];
}