Cod sursa(job #1465544)

Utilizator blackoddAxinie Razvan blackodd Data 27 iulie 2015 16:20:08
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>

using namespace std;

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

#define MaxN 16001
#define INF 0x3f3f3f3f

int n, x, y;
int summ = -INF;

vector<int> G[MaxN], V(MaxN), sum(MaxN), summax(MaxN);
queue<int>Q;
bitset<MaxN>viz;

void Dfs(int i);


int main()
{
    fin >> n;
    for ( int i = 1; i <= n; ++i )
    {
        fin >> V[i];
        sum[i] = V[i];
    }

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

    Dfs(1);

    for ( int i = 1; i <= n; ++i )
        if ( sum[i] > summ )
            summ = sum[i];

    fout << summ;


    fin.close();
    fout.close();
    return 0;
}

void Dfs(int i)
{
    viz[i] = 1;
    for ( auto j : G[i] )
        if ( !viz[j] )
        {
            Dfs(j);
            if ( sum[j] > 0   )
                sum[i] += sum[j];
        }
}