Cod sursa(job #2293891)

Utilizator alex.cojocaruAlex Cojocaru alex.cojocaru Data 1 decembrie 2018 18:02:49
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <stdio.h>
#include <vector>

#define NMAX 16000

using namespace std;

vector <int> mat [ NMAX + 1 ] ;
int val [ NMAX + 1 ] ;
int viz [ NMAX + 1 ] ;
int s [ NMAX + 1]  ;

void dfs (int nod, int n ) {
  viz[nod] = 1 ;
  for (auto elem : mat[nod] ) {
    if (viz[elem] == 0 ) {
      dfs(elem, n) ;
      s[nod] = max (s[elem] + s[nod], s[nod] ) ;
    }
  }
}

int main() {

  FILE *fin, *fout ;
  fin = fopen ("asmax.in", "r" ) ;
  fout = fopen ("asmax.out", "w" ) ;
  int n, i, j, a, b, maxim ;
  fscanf (fin, "%d", &n ) ;
  for (i = 1 ; i <= n ; i++ )
    fscanf (fin, "%d", &val[i] ) ;
  for (i = 1 ; i <= n ; i++ ) {
    fscanf (fin, "%d %d", &a, &b ) ;
    mat[a].push_back(b) ;
    mat[b].push_back(a) ;
    s[i] = val[i] ;
  }
  dfs(1, n) ;
  //for (i = 1 ; i <= n ; i++ )
 //   fprintf (fout, "%d %d\n", s[i], i ) ;
  maxim = 0 ;
  for (i = 1 ; i <= n ; i++ )
    maxim = max (maxim, s[i] ) ;
  fprintf (fout, "%d", maxim ) ;
  return 0;
}