Pagini recente » Cod sursa (job #273430) | Cod sursa (job #1848168) | Cod sursa (job #1733179) | Cod sursa (job #954572) | Cod sursa (job #175151)
Cod sursa(job #175151)
#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 *fii[N],*q;
long long s[N],v[N];
void citire()
{
fin>>n;
int i;
for(i=1;i<=n;i++)
{
fin>>v[i];
tati[i]=0;
}
int a,b;
for(i=1;i<n;i++)
{
viz[i]=0;
fin>>a>>b;
q=new nod;
q->info=b;
q->urm=fii[a];
fii[a]=q;
tati[b]=a;
}
for(i=1;i<=n;i++)
if(tati[i]==0)
{
radacina=i;
break;
}
}
int max(int a)
{
if(a>0) return a;
return 0;
}
void progdin(int k)
{
nod *p;
p=fii[k];
while (p)
{if(!viz[p->info])
{
viz[p->info]=1;
progdin(p->info);
if(v[p->info]>0)
v[k]=v[k]+s[p->info];
viz[p->info]=0;
}
p=p->urm;
}
}
int main()
{
int max,i,j;
nod *p;
citire();
viz[radacina]=1;
progdin(radacina);
max=-16000000;
for(i=1;i<=n;i++)
if (max<s[i])
max=s[i];
fout<<max<<'\n';
return 0;
}