Cod sursa(job #3224835)

Utilizator Radu_VasileRadu Vasile Radu_Vasile Data 16 aprilie 2024 12:27:59
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define MAXN 1000
using namespace std;
vector <int> v[MAXN + 1];
int val[MAXN + 1];
char viz[MAXN + 1];
int sum[MAXN + 1];
int rez = -1e9;
void dfs(int node){
  viz[node] = 1;
  sum[node] = val[node];
  for(auto &i : v[node]){
    if(viz[i] == 0){
      dfs(i);
      sum[node] += sum[i];
      sum[node] = max(0, sum[node]);
    }
  }
  rez = max(rez, sum[node]);
}
int main(){
  FILE *fin, *fout;
  int n, i, x, y;
  fin = fopen( "asmax.in", "r" );

  fscanf(fin, "%d", &n);
  for( i = 1; i <= n; i++ )
    fscanf( fin, "%d", &val[i] );
  for( i = 0; i < n; i++ ){
    fscanf(fin, "%d%d", &x, &y);
    v[x].push_back(y);
    v[y].push_back(x);
  }

  fclose( fin );
  fout = fopen( "asmax.out", "w" );

  dfs(1);
  fprintf(fout, "%d\n", rez);

  fclose( fout );
  return 0;
}