Pagini recente » Cod sursa (job #3312607) | Cod sursa (job #872317) | Cod sursa (job #955324) | Cod sursa (job #546450) | Cod sursa (job #3336965)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 16005;
vector<int> val(NMAX), dp(NMAX);
vector<int> adj[NMAX];
void parcurgere(int v, int parent) {
for (auto x : adj[v]) {
if (x != parent) {
parcurgere(x, v);
if (dp[x] > 0) {
dp[v] += dp[x];
}
}
}
}
int main()
{
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
fin >> n;
for (int i = 1; i <= n; i++)
fin >> val[i];
vector<vector<int>> adj(n+1);
for (int i = 1; i <= n-1; i++) {
int a, b;
fin >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
parcurgere(1, -1);
int solutie = INT_MIN;
for (int i = 1; i <= n; i++)
solutie = max(solutie, dp[i]);
fout << solutie << "\n";
return 0;
}