Cod sursa(job #2050169)
Utilizator | Data | 27 octombrie 2017 23:24:43 | |
---|---|---|---|
Problema | Asmax | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#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;
}
caut (1);
g << Max;
return 0;
}