Pagini recente » Cod sursa (job #1686601) | Cod sursa (job #996367) | Cod sursa (job #236116) | Cod sursa (job #671682) | Cod sursa (job #2955317)
#include <fstream>
#include <vector>
using namespace std;
int v[16010], D[16010], sol;
bool viz[16010];
vector<int>L[16010];
void dfs(int nod){
viz[nod]=true;
D[nod]=v[nod];
for (auto vec:L[nod]){
if (!viz[vec]){
dfs(vec);
if (D[vec]>0){
D[nod]+=D[vec];
}
}
}
sol=max(sol, D[nod]);
}
int n,x,y;
int main() {
ifstream fin("asmax.in");
ofstream fout("asmax.out");
fin>>n;
sol=-1e9;
for (int i=1;i<=n;i++){
fin>>v[i];
sol=max(sol, v[i]);
}
for (int i=1;i<n;i++){
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1);
fout<<sol;
return 0;
}