Cod sursa(job #2461104)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 24 septembrie 2019 21:29:17
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int N=16005;
int v[N];
vector <int> gr[N];
int d[N];
bool viz[N];
void dfs(int nod){
  viz[nod]=true;
  int sum=0;
  for(auto x:gr[nod]){
    if(!viz[x]){
      dfs(x);
      if(d[x]>=0)
        sum+=d[x];
    }
  }
  d[nod]=sum+v[nod];
}
int main()
{
  int n;
  FILE*fin,*fout;
  fin=fopen("asmax.in","r");
  fout=fopen("asmax.out","w");
  fscanf(fin,"%d",&n);
  for(int i=1;i<=n;i++){
    fscanf(fin,"%d",&v[i]);
  }
  for(int i=1;i<n;i++){
    int x,y;
    fscanf(fin,"%d%d",&x,&y);
    gr[x].push_back(y);
    gr[y].push_back(x);
  }
  dfs(1);
  int maxi=d[1];
  for(int i=2;i<=n;i++)
    maxi=max(maxi,d[i]);
  fprintf(fout,"%d",maxi);
  return 0;
}