Pagini recente » Cod sursa (job #193985) | Cod sursa (job #1130348) | Cod sursa (job #1550817) | Cod sursa (job #1967747) | Cod sursa (job #2522053)
#include<fstream>
#define nmax 16007
#define inf -5000
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int star[nmax],t[3][nmax],d[nmax],i,j,v[nmax],n,k,ti,stiva[nmax],varf=1,coloana,element,vecin,ok,afisat=inf;
bool fr[nmax];
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i],d[i]=inf;
for(ti=1;ti<=n-1;ti++)
{
f>>i>>j;
k++;
t[0][k]=j;
t[1][k]=star[i];
star[i]=k;
k++;
t[0][k]=i;
t[1][k]=star[j];
star[j]=k;
}
stiva[1]=1;
fr[1]=1;
while(varf)
{
element=stiva[varf];
coloana=star[element];
ok=0;
while(coloana && ok==0)
{
vecin=t[0][coloana];
if(fr[vecin]==0)
{
fr[vecin]=1,ok=1,stiva[++varf]=vecin;
}
coloana=t[1][coloana];
}
if(ok==0)
{
coloana=star[stiva[varf]];
d[stiva[varf]]=v[stiva[varf]];
while(coloana)
{
vecin=t[0][coloana];
if(d[vecin]!=inf && d[vecin]>0)
d[stiva[varf]]+=d[vecin];
coloana=t[1][coloana];
}
afisat=max(afisat,d[stiva[varf]]);
varf--;
}
}
g<<afisat;
}