Cod sursa(job #1098144)

Utilizator vyrtusRadu Criuleni vyrtus Data 4 februarie 2014 15:49:37
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <vector>

#define inf  -1000000
#define nmax 16001
using namespace std;

ifstream f("asmax.in");
ofstream g("asmax.out");

int val[nmax],viz[nmax],r[nmax], sol = inf,n;
vector <int> drum[nmax];

void dfs(int nod)
{
    viz[nod] = 1; r[nod] = val[nod];
     for (int i=0;i<drum[nod].size();i++)
     {
         int t = drum[nod][i];
         if (!viz[t])
         {
             dfs(t);
             if (r[t] > 0) r[nod] += r[t];
         }
     }
     sol = max(sol,r[nod]);
}

int main()
{
    f >> n;
     for (int i=1;i<=n;i++)
        f >> val[i];

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

        dfs(1);
        g << sol;
    return 0;
}