Cod sursa(job #2465322)

Utilizator Dragos1226Dragos Chileban Dragos1226 Data 29 septembrie 2019 20:25:39
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define NMAX 16000
vector <int> V[NMAX+5];
int N, viz[NMAX+5], val[NMAX+5], dp[NMAX+5], smax;

void DFS (int node) {
    viz[node] = 1;

    for (int i = 0; i < V[node].size(); i++) {
       int vecin = V[node][i];

       if(!viz[vecin]) {
        DFS(vecin);

        if(dp[vecin] > 0)
            dp[node] += dp[vecin];
       }
    }
}

int main () {
    in >> N;

    for (int i = 1; i <= N; i++) {
        in >> val[i];
        dp[i] = val[i];
    }
    int x,y;
    for (int i = 1; i < N; i++) {
        in >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }

    DFS(1);

    smax = dp[1];
    for (int i = 2; i <= N; i++)
        if(dp[i] > smax)
            smax = dp[i];

    out << smax;
}