Pagini recente » Cod sursa (job #15092) | Cod sursa (job #1536948) | Cod sursa (job #1644802) | Cod sursa (job #1974436) | Cod sursa (job #2050163)
#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;
bool a[16010][16010], ap[16010];
void caut (int w)
{
ap[w]=1;
s+=v[w];
if (s>Max) Max=s;
// g << w << " " << s << '\n';
for (int i=1; i<=n; i++){
if (a[w][i]==1 && ap[i]==0) caut(i);
}
}
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;
}
for (i=1; i<=n; i++){
memset(ap, 0, sizeof(ap));
aux=i;
s=0;
caut (i);
// g << '\n';
}
g << Max;
return 0;
}