Cod sursa(job #2394648)

Utilizator vladvaculinVlad V vladvaculin Data 1 aprilie 2019 19:22:07
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
vector <int> g[16002];
int a[16002], v[16002];
int mx;

void dfs(int s){

    v[s] = 1;
  //  cout << s<<" "<<a[s]<<"     ";
    for(int i = 0; i<g[s].size(); i++){
        int dest = g[s][i];
        if(v[dest] == 0){

            dfs(dest);
            if(a[dest] > 0)
                a[s] += a[dest];
            mx=max(mx, a[s]);
        }
    }
}

int main(){
    int j, mn=-1003;
    fin >> n;
    for(int i = 1; i<=n; i++){
        fin >> a[i];
        if(a[i] > mn){
            mn=a[i];
            j=i;
        }
    }
    int x, y;
    for(int i = 0; i<n-1;i++){
        fin>>x>>y;
        g[x].pb(y);
        g[y].pb(x);
    }
    mx=a[j];
    dfs(j);
  //  for(int i = 1; i<=n; i++)
    //    cout << a[i] << " ";
    fout << mx;
}