Pagini recente » Cod sursa (job #1771849) | Cod sursa (job #1288461) | Cod sursa (job #1770946) | Cod sursa (job #962350) | Cod sursa (job #1919785)
#include <fstream>
#include <vector>
#define nmax 16001
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
short int fiu[nmax][nmax];
short int v[nmax];
int d[nmax],rad[nmax],n;
void dinamica(int nod)
{
int i;
d[nod]=d[nod]+v[nod];
for(i=1;i<=n;i++)
if(fiu[nod][i])
{
dinamica(i);
if(d[i]>0)
d[nod]=d[nod]+d[i];
}
}
int main()
{
int i,x,y,s=0;
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<n;i++)
{
fin>>x>>y;
rad[y]=1;
fiu[x][y]=1;
}
for(i=1;i<=n;i++)
if(rad[i]==0)
{
dinamica(i);
break;
}
for(i=1;i<=n;i++)
s=max(s,d[i]);
fout<<s;
return 0;
}