Pagini recente » Cod sursa (job #2785137) | Cod sursa (job #2018502) | Cod sursa (job #286739) | Cod sursa (job #597466) | Cod sursa (job #2050200)
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n, i, v[16010], Max, m, x, y, aux, s[16010];
bool a[16010][16010], ap[16010];
int dfs (int w)
{
ap[w]=1;
s[w]=v[w];
for (int i=1; i<=n; i++){
if (a[w][i]==1 && ap[i]==0) {
int x=dfs(i);
if (s[w]+x>0) s[w]+=x;
}
}
if (s[w]>Max) Max=s[w];
return s[w];
}
int main ()
{
f >> n ;
for (i=1; i<=n; i++) f >> v[i];
for (i=1; i<n; i++){
f >> x >> y;
a[x][y]=a[y][x]=1;
}
x=dfs(1);
// for (i=1; i<=n; i++){
// if (s[i]>Max) Max=s[i];
// }
g << Max;
return 0;
}