Pagini recente » Cod sursa (job #1122645) | Cod sursa (job #3001878) | Cod sursa (job #2583787) | Cod sursa (job #735534) | Cod sursa (job #2947186)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> G[16005];
int n, v[16005], viz[16005], vmax;
void citire() {
fin>>n;
for (int i=0; i<n; i++)
fin>>v[i];
int x, y;
for (int i=0; i<n-1; i++) {
fin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
int dfs(int k) {
viz[k]=1;
int sum=v[k-1];
for (auto &i: G[k])
if (!viz[i])
sum=max(sum, sum+dfs(i));
if (sum>vmax)
vmax=sum;
return sum;
}
int main() {
citire();
fout<<dfs(1);
return 0;
}