Cod sursa(job #2199279)

Utilizator herbertoHerbert Mohanu herberto Data 27 aprilie 2018 09:47:56
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<bits/stdc++.h>
using namespace std;

#define MAXN 16001
#define INF 1000000000

vector<int>g[MAXN];
int v[MAXN], d[MAXN];
char viz[MAXN];
int ans=-INF;
void dfs(int x){
  int y, i;
  d[x]=v[x];
  viz[x]=1;
  for(i=0; i<g[x].size(); i++){
    y=g[x][i];
    if(viz[y]==0){
      dfs(y);
      if(d[y]>=0)
        d[x]+=d[y];
    }
  }
  if(d[x]>ans)
    ans=d[x];
}

int main(){
  FILE*fin=fopen("asmax.in", "r");
  FILE*fout=fopen("asmax.out", "w");
  int n, i, a, b;
  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);
  fprintf(fout, "%d", ans);
  return 0;
}