Cod sursa(job #3234955)

Utilizator Octa-pe-infoNechifor Octavian Octa-pe-info Data 12 iunie 2024 22:49:41
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

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

vector<vector<int>>tabel;
vector<int>dp,vi;
vector<bool>viz;


void dfs(int nod) {

    viz[nod]=true;
    dp[nod]=vi[nod];

    for(auto i : tabel[nod])
        if(viz[i]==false) {

            dfs(i);

            if(dp[i]>0)
                dp[nod]+=dp[i];

        }

}

int main() {

    int n;
    fin>>n;

    tabel.resize(n+1);
    vi.resize(n+1);
    dp.resize(n+1);
    viz.resize(n+1);

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

    for(int i=1;i<n;i++){

        int x,y;
        fin>>x>>y;
        tabel[x].push_back(y);
        tabel[y].push_back(x);

    }

    dfs(1);

    int maxi=-11111110;

    for(int i=1;i<=n;i++)
        maxi=max(maxi,dp[i]);

    fout<<maxi;

    return 0;
}