Cod sursa(job #147077)

Utilizator dudu77tTudor Morar dudu77t Data 2 martie 2008 16:06:01
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#define DIM 16001

using namespace std;

typedef struct nod
{
   int vf;
   nod *next;
} NOD, *PNOD;

int n, m;
PNOD L[DIM];
int val[DIM];
int suma[DIM];
int sel[DIM];

void Read();
int Df(int);

int main()
{
   int i, max;
   Read();
   suma[1] = Df(1);
   max = suma[1];
   for (i = 2; i <= n; i++)
      if (suma[i] > max) max = suma[i];
   ofstream fout ("asmax.out");
   fout << max;
   fout.close();
   return 0;
}

int Df(int v)
{
   sel[v] = 1;
   PNOD P;
   int a = 0, s = val[v];
   for (P = L[v]; P; P = P->next)
      if (!sel[P->vf]) 
      {
         a = Df(P->vf);
         if (a > 0) s += a;
      }   
   
   suma[v] = s;
   return s;
}

void Read()
{
   int i, a, b;
   PNOD P;
   ifstream fin ("asmax.in");
   fin >> n;
   m = n - 1;
   for (i = 1; i <= n; i++)
      fin >> val[i];
   for (i = 1; i <= m; i++)
   {
      fin >> a >> b;
      P = new NOD;
      P->vf = a;
      P->next = L[b];
      L[b] = P;
      P = new NOD;
      P->vf = b;
      P->next = L[a];
      L[a] = P;
   }
   fin.close(); 
}