Cod sursa(job #1891857)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 24 februarie 2017 13:16:02
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#include<vector>
#define N 16001
#define MIN -20000000
using namespace std;
vector <int> v[N];
int val[N];
int viz[N];
int smax;
int dfs(int nods){
  int i,nod,s,sum;
  viz[nods] = 0;
  sum = val[nods];
  for (i=0;i<v[nods].size ();i++){
    nod = v[nods][i];
    if (viz[nod] == -1){
      s = dfs (nod);
      sum = sum > sum + s ? sum : sum + s;
    }
  }
  smax = smax > sum ? smax : sum;
  return sum;
}

int main (){
  FILE *in,*out;
  in = fopen ("asmax.in","r");
  out = fopen ("asmax.out","w");
  int n,i,rad,n1,n2;
  fscanf (in,"%d",&n);
  for (i=1;i<=n;i++){
    fscanf (in,"%d",&val[i]);
    viz[i] = -1;
  }// init

  for (i=1;i<=n-1;i++){
    fscanf (in,"%d%d",&n1,&n2);
    v[n1].push_back(n2);
    v[n2].push_back(n1);
  }

  smax = MIN;
  for (i=1;i<=n;i++){
    smax = smax > val[i] ? smax : val[i];

  }

  dfs (1);

  fprintf(out,"%d",smax);

  fclose (in);
  fclose (out);
  return 0;
}