Cod sursa(job #1465526)

Utilizator blackoddAxinie Razvan blackodd Data 27 iulie 2015 16:05:08
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 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 summax = -INF;

vector<int> G[MaxN], V(MaxN), sum(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];

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

    Dfs(1);

    fout << summax;


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

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

        }
    }
    sum[i] += V[i];
}