Cod sursa(job #2505972)

Utilizator andaraluca2001Anda Epure andaraluca2001 Data 7 decembrie 2019 12:29:37
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream in("asmax.in");
ofstream out("asmax.out");
int n,v[16009],st,dr,lst[16009],urm[16009],vf[16009],nr;
bool viz[16009];

void adauga(int x, int y)

{

    vf[++nr]=y;

    urm[nr]=lst[x];

    lst[x]=nr;

}

void dfs(int x)
{
    viz[x]=true;

    for(int p=lst[x];p!=0;p=urm[p])
    {
         int y=vf[p];
         if(!viz[y])
         {

             dfs(y);
             if(v[y]>0) v[x]+=v[y];
         }


    }


}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++) in>>v[i];

    for(int i=1;i<=n-1;i++)
    {
       in>>st>>dr;
       adauga(st,dr);
       adauga(dr,st);


    }

    for(int i=1;i<=n;i++) if(!viz[i]) dfs(i);
    int s=0;

    for(int i=1;i<=n;i++) s+=v[i];
    out<<s/2;
    return 0;
}