Cod sursa(job #2638775)

Utilizator euyoTukanul euyo Data 29 iulie 2020 19:54:22
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

ifstream fin( "asmax.in" );
ofstream fout( "asmax.out" ); 

const int MaxN = 16001;

vector<int> arb[MaxN]; 
int v[MaxN];
int viz[MaxN];
int mx[MaxN];

void DFS( int node ) {
  mx[node] = v[node];
  viz[node] = 1;
  for ( int i = 0; i < arb[node].size(); ++i ) {
	if ( !viz[arb[node][i]] ) {
	  DFS( arb[node][i] );
	  mx[node] = max( mx[node], mx[node] + mx[arb[node][i]] );
    }
  }
}

int main() {
  int n, i, x, y;

  fin >> n;
  for ( i = 1; i <= n; ++i ) {
	fin >> v[i];
  }
  for ( i = 1; i < n; ++i ) {
	fin >> x >> y;
	arb[x].push_back( y );
	arb[y].push_back( x );
  }
  DFS( 1 );  
  int maxx = 0;
  for ( i = 1; i <= n; ++i ) {
    maxx = max( maxx, mx[i] ); 	
  }
  fout << maxx;
  fin.close();
  fout.close();
  return 0;
}