Cod sursa(job #175007)

Utilizator Iceman_ftgBurghelea Alex Iceman_ftg Data 9 aprilie 2008 14:33:58
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream.h>
#define N 161
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int v[N],n,viz[N],tati[N],radacina,fii[N][N],nrf[N];
long long s[N];
void citire()
{
fin>>n;
int i;
for(i=1;i<=n;i++)
	{
	fin>>v[i];
	tati[i]=0;
	nrf[i]=0;
	}
int a,b;
for(i=1;i<n;i++)
	{
	fin>>a>>b;
	nrf[a]++;
	fii[a][nrf[a]]=b;
	tati[b]=a;
	s[i]=0;
	}
for(i=1;i<=n;i++)
if(tati[i]==0)
	{
	radacina=i;
	break;
	}
}
int max(int a,int b)
{
if(a>b) return a;
return b;
}

void progdin(int nod)
{
int i;
if(nrf[nod]>=1)
for(i=1;i<=nrf[nod];i++)
progdin(fii[nod][i]);
s[nod]=v[nod];
if (nrf[nod]!=0)
for(i=1;i<=nrf[nod];i++)
s[nod]=max(s[nod],s[nod]+s[i]);
}
int main()
{
int max,i,j;
citire();
progdin(radacina);
max=s[1];
for(i=2;i<=n;i++)
if (max<=s[i])
max=s[i];
fout<<max<<'\n';
return 0;
}