Pagini recente » Cod sursa (job #281203) | Cod sursa (job #1146904) | Cod sursa (job #3158173) | Cod sursa (job #570276) | Cod sursa (job #2368822)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 16006
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
int N;
int value[NMAX];
vector<int> graph[NMAX];
bool visited[NMAX];
int dp[NMAX];
int DFS(int a)
{
if(visited[a])
return 0;
visited[a] = 1;
int sum = value[a];
for(auto y : graph[a])
sum = max(sum, sum + DFS(y));
dp[a] = sum;
return sum;
}
int main()
{
fi >> N;
for(int i = 1; i <= N; ++i)
fi >> value[i];
for(int i = 1; i < N; ++i)
{
int a, b;
fi >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
DFS(1);
int maxx = -1001;
for(int i = 1; i <= N; ++i)
maxx = max(maxx, dp[i]);
fo << maxx;
}