Pagini recente » Cod sursa (job #1316946) | Cod sursa (job #334558) | Cod sursa (job #2113200) | Cod sursa (job #758992) | Cod sursa (job #2201678)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define MAXN 16005
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector<int>graf[MAXN];
bool viz[MAXN];
int n,cost_nod[MAXN],suma,bestsum = -2e9;
void dfs(int nod){
suma += cost_nod[nod];
bestsum = max(suma,bestsum);
if(suma < 0)
suma = 0;
viz[nod] = true;
int curent;
for(int i = 0; i < graf[nod].size(); i++){
curent = graf[nod][i];
if(!viz[curent])
dfs(curent);
}
}
int main()
{
in>>n;
for(int i = 1; i <= n; i++)
in>>cost_nod[i];
for(int i = 1; i <= n-1; i++){
int x,y;
in>>x>>y;
graf[x].push_back(y);
}
dfs(1);
out<<bestsum;
return 0;
}