Cod sursa(job #553577)

Utilizator LuffyBanu Lavinia Luffy Data 14 martie 2011 10:12:03
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#define dim 16005
using namespace std;

int i,n,x,y,rad,cost[dim],mat[dim][dim],viz[dim];
long long max,sum;

void dfs(int x)
{int i,nod;
	
 for(i=1; i<=mat[x][0]; i++)
  if(!viz[mat[x][i]])
  {nod=mat[x][i];
   viz[nod]=1;
   if(cost[nod]+sum >= 0) {sum=cost[nod]+sum; if(sum>max) max=sum;}
   else sum=0;
   dfs(nod);
  }
}
   



int main()
{
 FILE *f=fopen("asmax.in","r"), *g=fopen("asmax.out","w");
 
 fscanf(f,"%d",&n);
  for(i=1; i<=n; i++)
 {fscanf(f,"%d",&cost[i]); if(cost[i]>0) rad=i;}
  
  for(i=1; i<n; i++)
 {fscanf(f,"%d%d",&x,&y);
  mat[x][0]++; mat[x][mat[x][0]]=y;
  mat[y][0]++; mat[y][mat[y][0]]=x;
 }
 
 viz[rad]=1; sum=cost[rad]; max=cost[rad]; dfs(rad); 
  
 fprintf(g,"%d\n",max);
 
fclose(f);
fclose(g);
return 0;
}