Cod sursa(job #2638397)

Utilizator anabatAna Batrineanu anabat Data 28 iulie 2020 09:34:52
Problema Asmax Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

using namespace std;

#define VMAX 1000
#define NMAX 16000
#include <vector>

vector <int> g[NMAX+1];
int v[VMAX+1],d[NMAX+1],viz[NMAX+1];

int dfs(int nod){
  viz[nod]=1;
  d[nod]=v[nod];
  for(auto next : g[nod]){
    if(viz[next]==0){
      dfs(next);
      d[nod]=std::max(d[nod],d[nod]+d[next]);
    }
  }
}

int main()
{
  FILE *fin,*fout;
  fin=fopen("asmax.in","r");
  fout=fopen("asmax.out","w");

  int n,a,b,i,MAX,j;
  fscanf(fin,"%d%",&n);
  for(i=1;i<=n;i++){
    fscanf(fin,"%d",&v[i]);
  }
  for(i=1;i<=n-1;i++){
    fscanf(fin,"%d%d",&a,&b);
    g[a].push_back(b);
    g[b].push_back(a);
  }
  dfs(1);
  MAX=-1;
  for(i=1;i<=n;i++){
    if(d[i]>MAX)
      MAX=d[i];
  }
  fprintf(fout,"%d",MAX);
  fclose(fin);
  fclose(fout);
  return 0;
}