Cod sursa(job #3241355)
| Utilizator | Data | 29 august 2024 14:49:27 | |
|---|---|---|---|
| Problema | Asmax | Scor | 90 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.76 kb |
#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;
}
