Cod sursa(job #1197571)

Utilizator azkabancont-vechi azkaban Data 12 iunie 2014 19:11:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
typedef struct celula {
                       int nod;
                       celula *next;
                      } *lista;

void add(long val, lista &p)
{
  lista r= new celula;
  r->nod=val;
  r->next=p;
  p=r;  
} 

void parcurgere(int val,int viz[],int P[],lista lda[],int &maxim)
{
  viz[val]=1;
  for (lista r=lda[val];r;r=r->next){
                                    if (viz[r->nod]==0) {
                                                         parcurgere(r->nod,viz,P,lda,maxim);
                                                         P[val]=max(P[val],P[val]+P[r->nod]);
                                                         }
                                    maxim=max(maxim,P[val]);
                                                         
                                    }
}
int n,i,a,b,P[16005],viz[16005],maxim(-99999);
lista lda[16005];
int main ()
{
  cin>>n;
  memset(lda,0,sizeof(lda));
  for (i=1;i<=n;++i) cin>>P[i];
  while (cin>>a>>b) { 
                     add(b,lda[a]);
                     add(a,lda[b]);
                     }
  parcurgere(1,viz,P,lda,maxim);
  cout<<maxim<<"\n";
return 0;
}