Cod sursa(job #3155721)

Utilizator daria_pDaria Popescu daria_p Data 9 octombrie 2023 15:29:30
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <set>

using namespace std;

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

int n,s[16001],ok[16001],m[16001],maxim,st[16001],nr,S;

set<int> a[16001];

void dfs(int nod)
{
    ok[nod]=1;
    m[nod]=0;
    for(set<int>::iterator it=a[nod].begin();it!=a[nod].end();it++)
    {
        if(ok[*it]==0)
        {
         dfs(*it);
         s[nod] += s[*it];
         m[nod] = max(m[nod], s[*it]);
        }
    }
    m[nod]=max(m[nod], S-s[nod]);
}

int main()
{
    int x,y,i;
    f>>n;
    for(i=1;i<=n;i++)
    {
     f>>s[i];
     S+= s[i];
    }
    while(f>>x>>y)
    {
        a[x].insert(y);
        a[y].insert(x);
    }
    maxim=0;
    dfs(1);
    for(i=1;i<=n;i++)
    {
     if(m[i]>maxim){maxim = m[i];}
    }
    g<<maxim;
    return 0;
}