Cod sursa(job #2828416)

Utilizator atudoreimirunaAtudorei Miruna Gabriela atudoreimiruna Data 7 ianuarie 2022 11:40:59
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
#include <vector>

#define N 16005
 
using namespace std;
 
ifstream fin("asmax.in");
ofstream fout("asmax.out");
 
int n;
vector <int> adjacency_list[N]; // lista de adiacenta a grafului
int weights[N];   // valorile pt fiecare nod
int max_graph[N];
bool visited[N];

void Read()
{
    fin >> n;

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

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

void DFS(int s)
{
    visited[s] = 1;
    max_graph[s] = weights[s];

    for ( auto i : adjacency_list[s] )
    {
        if ( !visited[i] )
        {
            DFS(i);

            if ( max_graph[i] > 0 )
                max_graph[s] += max_graph[i];
        }
    }
}

void Solve_Write()
{
    int maxv = -1001;
    for ( int i = 1; i <= n; i++ )
        maxv = max(maxv, max_graph[i]);
    fout << maxv;
}

int main()
{   
    Read();
    DFS(1);
    Solve_Write();

    return 0;
}