Cod sursa(job #1659730)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 22 martie 2016 15:51:41
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#define MAXN 16000
int con=1;
int next[MAXN*2],v[MAXN*2],ind[MAXN+1],d[MAXN+1],vf[MAXN+1],cost[MAXN+1];
inline void add(int x,int y){
     next[con]=ind[x];
     v[con]=y;
     ind[x]=con;
     con++;
}
void DFS(int nod){
     int poz;
     vf[nod]=1;
     poz=ind[nod];
     d[nod]=cost[nod];
     while(poz){
         if(vf[v[poz]]==0){
            DFS(v[poz]);
            if(d[v[poz]]>=0)
                d[nod]+=d[v[poz]];
         }
         poz=next[poz];
     }
}
int main(){
    FILE*fi,*fout;
    int i,n,max,x,y;
    fi=fopen("asmax.in" ,"r");
    fout=fopen("asmax.out" ,"w");
    fscanf(fi,"%d" ,&n);
    for(i=1;i<=n;i++)
       fscanf(fi,"%d" ,&cost[i]);
    for(i=1;i<n;i++){
       fscanf(fi,"%d%d" ,&x,&y);
       add(x,y);
       add(y,x);
    }
    DFS(1);
    max=0;
    for(i=1;i<=n;i++){
       if(max<d[i])
          max=d[i];
          }
    fprintf(fout,"%d" ,max);
    fclose(fi);
    fclose(fout);
    return 0;
}