Cod sursa(job #1854341)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 22 ianuarie 2017 16:42:00
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int nmax=16000, inf=1e9;
vector <int> g[nmax+1];
bool u[nmax+1];
int v[nmax+1];
int sol=-inf;

int dfs (int x) {
    u[x]=1;
    int s=v[x];
    for (int i=0; i<int(g[x].size()); i++) {
        int xn=g[x][i];
        if (u[xn]==0) {
            s+=dfs(xn);
        }
    }
    if (s>sol) {
        sol=s;
    }
    if (s<0) {
        s=0;
    }
    return s;
}

int main () {
    int n;
    fin>>n;

    for (int i=1; i<=n; i++) {
        fin>>v[i];
    }
    for (int i=1; i<=n-1; i++) {
        int x, y;
        fin>>x>>y;
        g[x].push_back(y);
        g[y].push_back(x);
    }

    dfs(1);
    fout<<sol<<"\n";
}