Cod sursa(job #628268)

Utilizator Mirc100Mircea Octavian Mirc100 Data 31 octombrie 2011 21:36:01
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <queue>
#include<stdio.h>
using namespace std;

int n,m,viz[16000],cost[16000],val[16000],best,valmax=-10001;
vector<int> l[16000]; 
void dfs(int x){
     viz[x]=1;
     val[x]=cost[x];
     for(int i=0;i<l[x].size();i++)
         if (viz[l[x][i]]==0){
             dfs(l[x][i]);
             if(val[l[x][i]]>0)
                val[x]+=val[l[x][i]];
         }    
      if(val[x]>valmax) valmax=val[x];   
     }

int main(){
   
     FILE *f;
     int i,x,y;
       
     f=fopen("asmax.in","r");
     fscanf(f,"%d",&n);
     
     for(i=0;i<n;i++)
         fscanf(f,"%d",&cost[i]);
     for(i=0;i<n;i++){
         fscanf(f,"%d %d",&x,&y);
         l[x-1].push_back(y-1);
         l[y-1].push_back(x-1);
     }
     fclose(f);
     
    dfs(0);              
                 
     f=fopen("asmax.out","w");
     fprintf(f,"%d\n",valmax);
     
     fclose(f); 
     
     return 0;   
}