Pagini recente » Cod sursa (job #73518) | Cod sursa (job #2557433) | Cod sursa (job #1043449) | Cod sursa (job #2970825) | Cod sursa (job #3237808)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int MAX_NUM = 16005;
int n, answer = INT_MIN;
vector<bool> visited(MAX_NUM, false);
vector<int> graph[MAX_NUM], v(MAX_NUM);
void dfs(int x) {
visited[x] = true;
for (int node : graph[x]) {
if (!visited[node]) {
dfs(node);
if (v[node] > 0) {
v[x] += v[node];
}
}
}
answer = max(answer, v[x]);
}
int main() {
fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
for (int i = 0; i < n - 1; ++i) {
int a, b;
fin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
dfs(1);
fout << answer;
return 0;
}