Cod sursa(job #1429021)

Utilizator ion824Ion Ureche ion824 Data 5 mai 2015 15:19:03
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.86 kb
#include<fstream>
#define uns unsigned short
using namespace std;
const uns NM = 16005;
typedef struct lnod{
        uns vf;
        struct lnod *next;
        }*Nod;
Nod a[NM];
int smax[NM];
bool viz[NM];
 
void add(int x,int y){
     Nod p=new lnod;
     p->vf=y;
     p->next=a[x];
     a[x]=p;
     }
 
void dfs(int nod){
     viz[nod]=1;
     for(Nod p=a[nod];p;p=p->next)
       if(!viz[p->vf])
        {
         dfs(p->vf);
         if(smax[p->vf]>0)smax[nod]+=smax[p->vf];              
        }     
     }
  
int main(void){
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");
    int N,i,mm,x,y;
    fin>>N;
    for(i=1;i<=N;++i)
      fin>>smax[i];
    for(i=1;i<N;++i)
      {
       fin>>x>>y;
       add(x,y);
       add(y,x);              
      }
    dfs(1);
    mm=smax[1];
    for(i=2;i<=N;++i)if(smax[i]>mm)mm=smax[i];
    fout<<mm;
 return 0;   
}