Pagini recente » Cod sursa (job #518272) | Cod sursa (job #2746276) | Cod sursa (job #2579186) | Cod sursa (job #2988060) | Cod sursa (job #1538982)
#include <iostream>
#include <fstream>
#include <vector>
#define MAXINT 99999
#define DN 16001
#define pb push_back
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
int n,v[DN],viz[DN],rs=-MAXINT;
vector<int> g[DN];
int DFS(int nod) {
int sum = v[nod];
viz[nod]=1;
for (int i = 0; i < g[nod].size(); ++i) {
if (!viz[g[nod][i]]) {
viz[g[nod][i]] = 1;
int ss = DFS(g[nod][i]);
if (ss>0) {
sum+=ss;
}
}
}
rs = max(rs,sum);
return sum;
}
int main()
{
fi >> n;
for (int i = 1; i <= n; ++i) {
fi >> v[i];
}
for (int i = 1; i < n; ++i) {
int u,v;
fi >> u >> v;
g[u].pb(v);
g[v].pb(u);
}
DFS(1);
fo << rs;
return 0;
}