Cod sursa(job #3155727)

Utilizator daria_pDaria Popescu daria_p Data 9 octombrie 2023 15:34:09
Problema Asmax Scor 70
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.82 kb
#include <fstream>
#include <set>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n,i,j,viz[16005],s[16005],ma[16005],mi,x,y,k,sol[16005],a[16005],S,M;
set <int> v[16005];
void dfs(int nod)
{
    viz[nod]=1;
    s[nod]=a[nod];
    ma[nod]=0;
    for (set<int>::iterator i=v[nod].begin();i!=v[nod].end();i++)
    {
        if (viz[*i]==0) {dfs(*i);
        if (s[*i]>0) s[nod]+=s[*i];
        ma[nod]=max(ma[nod],s[*i]);}
    }
    ma[nod]=max(ma[nod],S-s[nod]);
}
int main()
{
    fin >>n;
    for (i=1;i<=n;i++)
    {
        fin >>a[i];
        S=S+a[i];
    }
    while (fin >>x>>y)
    {
        v[x].insert(y);
        v[y].insert(x);
    }
    dfs(1);
    mi=-2e9;
    for (i=1;i<=n;i++)
    {
        if (ma[i]>M) M=ma[i];
    }
    fout <<M;
    return 0;
}