Cod sursa(job #3223158)

Utilizator asparkCostea Andrei Ioan aspark Data 12 aprilie 2024 15:45:18
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int v[16001];
int viz[16001];
int smax = -999999;
vector <vector <int>> G;

int dfs(int nod){

    viz[nod] = true;

    for(int vec : G[nod]){
        if(!viz[vec]){
            dfs(vec);

            if(v[vec] > 0){
                v[nod] += v[vec];
            }
        }
    }

    smax = max(v[nod], smax);

    return smax;

}

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

    G.resize(n + 1);

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

       G[a].push_back(b);
       G[b].push_back(a);
    }

    fout<<dfs(1);

    return 0;
}