Cod sursa(job #863989)

Utilizator lucian666Vasilut Lucian lucian666 Data 24 ianuarie 2013 15:35:36
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb



//Vasilut
#include<fstream>
#include<vector>
#include<bitset>
#include<algorithm>

#define NN 16009
#define pb push_back

const char iname[]="asmax.in";
const char oname[]="asmax.out";

using namespace std;
ofstream out(oname);

int n,cost[NN];

bitset< NN > uz;

vector < int > G[NN];
typedef vector < int >:: iterator IT;

void dfs( int start)
{
    uz[ start] = 1;
        for ( IT I = G[start].begin();I!=G[start].end(); ++I)
            if ( !uz[ *I ] )
            {
                dfs( *I );
                if ( cost[ *I ] > 0 )
                cost[start]+= cost[*I];
            }
}

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

    for ( int x,y, i = 1 ; i<n ;i++)
    {
        in >> x >> y;
        G[x].pb(y);
        G[y].pb(x);
    }

    dfs(1);

    sort( cost + 1 ,cost + n + 1 , greater<int>() );

    out << cost[1];
    return 0;
}