Cod sursa(job #2199648)

Utilizator SpiristulTeribilStefan Vilcu SpiristulTeribil Data 28 aprilie 2018 17:02:36
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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;
}