Cod sursa(job #175368)

Utilizator Iceman_ftgBurghelea Alex Iceman_ftg Data 9 aprilie 2008 21:14:26
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream.h>
#define N 16100
ifstream fin("asmax.in");
ofstream fout("asmax.out");
struct nod {int info;nod *urm;};
int n,tati[N],radacina,viz[N];
nod *lista[N],*q,*t;
long long s[N],v[N];
void pune(int i1,int i2)
 {  
     nod *p;  
     p=new nod;  
     p->info=i1;  
     if(!lista[i2]){p->urm=0;lista[i2]=p;}  
     else{p->urm=lista[i2];lista[i2]=p;}  
     p=new nod;  
     p->info=i2;  
     if(!lista[i1]){p->urm=0;lista[i1]=p;}  
     else{p->urm=lista[i1];lista[i1]=p;}  
 }

void citire()
{
fin>>n;
int i;
for(i=1;i<=n;i++)
	{
	fin>>v[i];
	viz[i]=0;
	}
int a,b;
for(i=1;i<n;i++)
	{
	fin>>a>>b;
	pune(a,b);
	}
}
 

void progdin(int k)
{
nod *p;
p=lista[k];
int indice;
viz[k]=1;
while (p)
 {
  indice=p->info;
  if(!viz[indice])
	{
	progdin(indice);
	if(v[indice]>0)
		v[k]+=v[indice];
	}
	p=p->urm;
  }
}
int main()
{
int max,i,j;
nod *p;
citire();
progdin(1);
max=v[1];
for(i=2;i<=n;i++)
if (max<=v[i])
max=v[i];
fout<<max<<'\n';
return 0;
}