Pagini recente » Cod sursa (job #536874) | Cod sursa (job #2330653) | Cod sursa (job #3154972) | Cod sursa (job #1386248) | Cod sursa (job #2199648)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("asmax.in") ;
ofstream out ("asmax.out") ;
const int N = 160001 ;
int n , m , V[N] ;
vector <int> a[N] ;
bool viz[N] ;
int dfs(int x) {
viz[x] = true ;
int y ;
for(int i = 0 ; i < a[x].size() ; i++){
y = a[x][i] ;
if(!viz[y]) {
dfs(y) ;
if(V[y] > 0)
V[x] += V[y] ;
}
}
}
void citire () {
in >> n ;
int x , y ;
for(int i = 1; i <= n; i++)
in >> V[i] ;
m = n - 1 ;
for(int i = 1; i <= m; i++)
{
in >> x >> y ;
a[x].push_back(y) ;
a[y].push_back(x) ;
}
}
int main()
{
citire() ;
in >> n ;
int total = -999999999 ;
dfs(1) ;
for (int i = 1 ; i <= n ; i++) {
total = max(total , V[i]) ;
}
out << total ;
return 0;
}