Pagini recente » Cod sursa (job #3291610) | Cod sursa (job #2602604) | Cod sursa (job #3278960) | Cod sursa (job #2422987) | Cod sursa (job #3241354)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 16e3+10;
vector<int> values(nmax,0),dp(nmax,0),visited(nmax,0);
vector<vector<int>> mat(nmax);
int n;
void read_input(){
cin >> n;
for(int i = 1; i <=n; i++){
cin >> values[i];
};
int nod_1,nod_2;
for(int i = 1; i <=n-1; i++){
cin >> nod_1 >> nod_2;
mat[nod_1].push_back(nod_2);
mat[nod_2].push_back(nod_1);
}
};
void dfs(int nod){
visited[nod] = 1;
dp[nod] = values[nod];
for(auto nod_aux : mat[nod]){
if(!visited[nod_aux]){
dfs(nod_aux);
dp[nod] = max(dp[nod],dp[nod] + dp[nod_aux]);
}
}
};
int main(){
read_input();
dfs(1);
int ans = -1;
for(int i = 1; i <=n; i++){
ans = max(ans,dp[i]);
};
cout << ans;
}