Cod sursa(job #1670258)

Utilizator andrei_bB. Andrei andrei_b Data 31 martie 2016 16:47:12
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

const int Nmax=16005;
const int Mmax=32005;

int n,a,b,nr,u;
int lst[Nmax],vf[Mmax],urm[Mmax],val[Nmax],q[Nmax];
bool viz[Nmax];

void adauga ( int x , int y ){
    nr++;
    vf[nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}

int bfs ( int x ){

    viz[x]=true;

    int poz,y;

    poz=lst[x];
    while ( poz != 0 ){
        y=vf[poz];
        poz=urm[poz];
        if ( !viz[y] ){
            if ( val[y] > 0 )
                val[x]+=val[y];
        }
    }

    return val[x];


}

int main()
{
    fin>>n;
    for ( int i=1 ; i<=n ; i++ )
        fin>>val[i];
    for ( int i=1 ; i<=n-1 ; i++ ){
        fin>>a>>b;
        adauga(a,b);
        adauga(b,a);
    }
    fout<<bfs(1);
    q[u++]=1;
}