Cod sursa(job #1757664)

Utilizator cameleonGeorgescu Dan cameleon Data 15 septembrie 2016 16:53:48
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include<vector>
#define Nmax 16005
using namespace std;

ifstream fin ("asmax.in");
ofstream fout("asmax.out");

vector <int> v[Nmax];
int n, k[Nmax], rad, smax, niv, sol[Nmax];
bool viz[Nmax];

void read(){
    int a, b;

    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>k[i];

    for(int i=1;i<=n-1;i++){
        fin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

void dfs(int rad){
    sol[rad]=k[rad];
    viz[rad]=1;
    for(int i=0;i<v[rad].size();i++){
        if(!viz[v[rad][i]]){
           dfs(v[rad][i]);
           if(sol[rad]+sol[v[rad][i]]>sol[rad])
             sol[rad]+=sol[v[rad][i]];
        }
    }
    smax=max(smax,sol[rad]);
}

int main()
{
    read();
    dfs(1);
    fout<<smax;
  return 0;

}