Pagini recente » Cod sursa (job #581138) | Cod sursa (job #1801850) | Cod sursa (job #3135524) | Cod sursa (job #2950624) | Cod sursa (job #1235990)
#include <fstream>
#include <vector>
using namespace std;
ifstream is ("asmax.in");
ofstream os ("asmax.out");
int N, D[16004], x, y, C[16004], S = -(1<<20);
bool b[16004];
vector <int> V[16004];
void DFS(int k);
int main()
{
is >> N;
for (int i = 1; i <= N; ++i)
is >> C[i], S = max(C[i], S);
for (int i = 1; i < N; ++i)
{
is >> x >> y;
V[x].push_back(y);
V[y].push_back(x);
}
b[1] = 1;
DFS(1);
os << S;
is.close();
os.close();
}
void DFS(int k)
{
D[k] = C[k];
for (int j = 0; j < V[k].size(); ++j)
if (b[V[k][j]] == 0)
{
b[V[k][j]] = 1;
DFS(V[k][j]);
D[k] = max(D[k] + D[V[k][j]], D[k]);
S = max(D[k], S);
}
};