Cod sursa(job #277448)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 11 martie 2009 18:58:32
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>

struct nod
{
     int inf;
     nod *next;
}*sir[100010];
int n,val[100010],a,b,v,S_max,viz[100010];

void baga()
{
     nod *q=new nod;
     q->inf=a;
     q->next=sir[b];
     sir[b]=q;

     q=new nod;
     q->inf=b;
     q->next=sir[a];
     sir[a]=q;
}

void citire()
{
     scanf ("%d",&n);
     for (int i=1;i<=n;i++)
          scanf ("%d ",&val[i]);

     for (int i=0;i<n;i++)
     {
          scanf ("%d %d",&a,&b);
          baga();
     }
}

inline int maxim(int a,int b)
{
     return a>b?a:b;
}

int df(int N)
{
     int S=val[N];
     for (nod *i=sir[N];i;i=i->next)
          if (!viz[i->inf])
          {
               viz[i->inf]=1;
               v=df(i->inf);
               if (v>0)
                    S+=v;
          }
     S_max=maxim(S_max,S);
     return S;
}

int main ()
{
     freopen ("asmax.in","r",stdin);
     freopen ("asmax.out","w",stdout);
     citire();
     viz[1]=1;
     S=-0x3f3f3f;
     df(1);
     printf("%d\n",S_max);
     return 0;
}