Pagini recente » Cod sursa (job #143248) | Cod sursa (job #3294132) | Cod sursa (job #143502) | Cod sursa (job #3242424) | Cod sursa (job #3241355)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
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(){
fin >> n;
for(int i = 1; i <=n; i++){
fin >> values[i];
};
int nod_1,nod_2;
for(int i = 1; i <=n-1; i++){
fin >> 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]);
};
fout << ans;
return 0;
}