Cod sursa(job #1197687)

Utilizator DjokValeriu Motroi Djok Data 13 iunie 2014 13:34:19
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<algorithm>
using namespace std;

typedef struct lnod {
      int info;
      lnod *next;  
}*nod;

int i,n,a[16005],x,y,rs=-16000001;
bool viz[16005];
nod lda[16005];

void add(int x,nod &y) {
    nod p=new lnod;
    p->info=x;
    p->next=y;
    y=p;      
}

void dfs(int x) {
    viz[x]=1;
    nod p=new lnod;
    for(p=lda[x];p;p=p->next)
     if(!viz[p->info]) 
     {
       dfs(p->info);
       if(a[p->info]>0) a[x]+=a[p->info],rs=max(rs,a[x]);
     }
}

int main()
{
  ifstream cin("asmax.in");
  ofstream cout("asmax.out");
  
  cin>>n;
  for(i=1;i<=n;i++) cin>>a[i];
  for(i=1;i<n;i++)
  {
    cin>>x>>y;              
    add(x,lda[y]);
    add(y,lda[x]);
  }  
  
  dfs(1);
  
  cout<<rs<<'\n';
    
 return 0;   
}