Pagini recente » Cod sursa (job #1118620) | Cod sursa (job #1331228) | Cod sursa (job #874253) | Cod sursa (job #1649537) | Cod sursa (job #2453878)
#include <fstream>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, t[16384], dp[16384], v[16384], val[16384];
struct nod{
int 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];
}
}
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];
}