Cod sursa(job #1778769)

Utilizator DobosDobos Paul Dobos Data 14 octombrie 2016 08:43:12
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

#define NMAX 16005

using namespace std;

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

int C[NMAX],S;
vector < int > G[NMAX];
bitset < NMAX > T;


int Dfs(int nod){
    if(T[nod] == 1)
        return 0;
    T[nod] = 1;
    int sol = C[nod],x;
    for(int i = 0; i < G[nod].size(); i++){
        x = Dfs(G[nod][i]);
        if( x  > 0){
           sol += x;
        }
    }
    if(S < sol)
        S = sol;
    return sol;
}

int main()
{
    ios :: sync_with_stdio(false);
    fin.tie(NULL);

    int n,sol,x,y;

    fin >> n;

    for(int i = 1; i <= n; i ++)
        fin >> C[i];
    S = C[1];

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

    for(int i = 1; i <= n; i++){
        if(T[i] == 0){
            Dfs(i);
        }
    }

   fout << S;
    return 0;
}