Pagini recente » Cod sursa (job #3139808) | Cod sursa (job #1764710) | Cod sursa (job #1944514) | Cod sursa (job #1161430) | Cod sursa (job #2206858)
#include <vector>
#include <fstream>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
const int Dim = 16001;
using VI = vector < int >;
using VVI = vector < VI >;
VVI G;
int n,A[Dim],ma = -0x3f3f3f3f;
bool V[Dim];
int Dfs(int node);
int main() {
fin >> n;
G = VVI(n+1);
for ( int i = 1; i <= n; ++i)
fin >> A[i];
int x,y;
for ( int i = 1; i < n; ++i) {
fin >> x >> y;
G[x].push_back(y);
G[y].push_back(x);
}
Dfs(1);
fout << ma;
}
int Dfs(int node) {
V[node] = true;
int sum = A[node];
for ( const int & i : G[node] )
if(!V[i] )
sum = max(sum,Dfs(i) + sum);
ma = max(ma, sum);
return sum;
}