Cod sursa(job #3314256)

Utilizator raluca1977Raluca zanfir raluca1977 Data 9 octombrie 2025 09:18:45
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;

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

vector<int> v[16001];
bool vizitat[16001];
int dp[16001];
int p[16001];
int n, x, y, maxi;

void citire_v(){

    fin >> n;

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

        fin >> p[i];
    }

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

        fin >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
}

void DFS(int nod){

    vizitat[nod] = true;
    dp[nod] = p[nod];


    for (int i = 0; i < v[nod].size(); i++){

        int vecin = v[nod][i];

        if (vizitat[vecin] == false){

            DFS(vecin);
            if (p[vecin] > 0){
                dp[nod] += p[vecin];
            }

            maxi = max(maxi, dp[nod]);

        }
        dp[nod] = maxi;
    }
}

int main(){

    citire_v();

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

        if (vizitat[i] == false){
            DFS(i);
        }
    }

    fout << maxi;

}