Cod sursa(job #3281008)

Utilizator inacioataCioata Ana Irina inacioata Data 28 februarie 2025 08:26:27
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int a[16002], n, dint[16002], sum1, sum2, neg[15002], p;
bool viz[16002];
vector<int> L[16002];

int DFS(int k)
{
    viz[k] = 1;
    sum1 += a[k];
    for(int i: L[k])
        if(!viz[i]) DFS(i);
}

void Reset()
{
    for(int i = 1; i <= n; i++)
        viz[i] = 0;
}

int main()
{
    int i, j, s = 0;
    fin >> n;
    for(i = 1; i <= n; i++)
    {
        fin >> a[i];
        s += a[i];
    }
    while(fin >> i >> j)
    {
        L[i].push_back(j);
        L[j].push_back(i);
        dint[i]++; dint[j]++;
    }
    for(i = 1; i <= n; i++)
        if(a[i] < 0)
    {
        if(dint[i] == 1) a[i] = 0;
        else neg[++p] = i;
    }

    for(i = 1; i <= n; i++)
        if(dint[i] != 1)
    {

        for(j = 1; j <= p; j++)
        {
            sum1 = 0;
            viz[j] = 1;
            DFS(i);
            Reset();
            s = max(s,sum1);
        }
    }
    fout << s;
    return 0;
}