Cod sursa(job #2830772)

Utilizator 6kmeleon6Luca Cordus 6kmeleon6 Data 10 ianuarie 2022 11:26:23
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#include <limits>

using namespace std;

int infinit = std::numeric_limits<int>::max();

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

int nr_N,  sum_max;
vector<int> viz(16001), val(16001), sum(16001);
vector<vector<int>> vec(16001);

void DFS(int k)
{
    viz[k] = 1;
    sum[k] = val[k];

    for(auto v:vec[k])
    {
        if(viz[v] == 0)
        {
            DFS(v);
            sum[k] = max(sum[k], sum[k] + sum[v]);
        }
    }
}

int main()
{
    in >> nr_N;

    for(int i = 1; i <= nr_N; i++)
    {
        int x;
        in >> x;
        val[i] = x;
    }

    int x, y;
    while(in >> x >> y)
    {
        vec[x].push_back(y);
        vec[y].push_back(x);
    }

    DFS(1);

    sum_max = -infinit;

    for(int i = 1; i <= nr_N; i++)
    {
        if(sum_max < sum[i])
            sum_max = sum[i];
    }
    out << sum_max;
    return 0;
}