Cod sursa(job #1444284)

Utilizator priestnoobFMI - Dan Nema priestnoob Data 29 mai 2015 15:16:39
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.95 kb
#include<fstream>
#include<vector>

using namespace std;

#define inf 0x7fffffff

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

vector<bool> viz;
vector<int> val;
vector<vector<int> >gr;
int n;

void read()
{
    f>>n;
    int aux,aux1;
    val.resize(n+1);
    viz.resize(n+1);
    gr.resize(n+1,vector<int> ());
    for(int i=1;i<=n;++i)
    {
        f>>val[i];
    }
    for(int i=1;i<n;++i)
    {
        f>>aux>>aux1;
        gr[aux].push_back(aux1);
        gr[aux1].push_back(aux);
    }
}

void dfs(int nod)
{
    viz[nod]=true;
    for(auto it=gr[nod].begin();it!=gr[nod].end();++it)
    {
        if(!viz[*it])
        {
            dfs(*it);
            if(val[*it]>0)
                val[nod]+=val[*it];
        }
    }
}

void solve()
{
    dfs(1);
    int ans=-inf;
    for(int i=1;i<=n;++i)
    {
        ans=max(ans,val[i]);
    }
    g<<ans;
}

int main()
{
    read();
    solve();
}