Pagini recente » Cod sursa (job #1871813) | Borderou de evaluare (job #1704711) | Borderou de evaluare (job #306095) | Cod sursa (job #653981) | Cod sursa (job #562905)
Cod sursa(job #562905)
#include <fstream>
#include <vector>
using namespace std;
#define DIM 16005
#define OO (1 << 30) - 1
ifstream fi ("asmax.in");
ofstream fo ("asmax.out");
int S[DIM], A[DIM], N, SSM = -OO, viz[DIM];
vector <int> V[DIM];
void dfs (int n)
{
S[n] = A[n];
viz[n] = 1;
for (int i = 0, f; i < V[n].size(); i++)
{
f = V[n][i];
if (!viz[f])
{
dfs (f);
if (S[f] > 0)
S[n] += S[f];
}
}
if (SSM < S[n])
SSM = S[n];
}
int main ()
{
fi >> N;
for (int i = 1; i <= N; i++)
fi >> A[i];
for (int i = 0, a, b; i < N - 1; i++)
{
fi >> a >> b;
V[a].push_back (b);
V[b].push_back (a);
}
dfs (1);
fo << SSM;
return 0;
}