Cod sursa(job #2856876)

Utilizator andrei_culerdaCulerda Andrei andrei_culerda Data 24 februarie 2022 15:00:45
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int N = 16000;
const int INF = 1e9;
int viz[N+5], val[N+5], sum[N+5];
vector <int> a[N+5];

void asmax(int x)
{
    viz[x] = 1;
    sum[x] = val[x];
    for(auto y: a[x])
    {
        if(!viz[y])
        {
            asmax(y);
            if(sum[y] > 0)
                sum[x] += sum[y];
        }
    }
}

int main()
{
    int n, u, v;
    fin >> n;
    for(int i = 1; i <= n; i++)
    {
        fin >> val[i];
    }
    while(fin >> u >> v)
    {
        a[u].push_back(v);
        a[v].push_back(u);

    }
    asmax(1);
    int Max = -INF;
    for(int i = 1; i <= n; i++)
    {
        Max = max(Max, sum[i]);
    }

    fout << Max << "\n";

    return 0;
}