Pagini recente » Cod sursa (job #2908491) | Cod sursa (job #520681) | Cod sursa (job #1895283) | Cod sursa (job #1104575) | Cod sursa (job #479406)
Cod sursa(job #479406)
#include <cstdio>
#include <vector>
#define N 16003
using namespace std;
vector <int> nod[N];
int sol[N],ok[N];
void df(int a)
{
ok[a]=1;
while (!nod[a].empty())
{
if (!ok[nod[a].back()])
{
df(nod[a].back());
if (sol[nod[a].back()]>0) sol[a]+=sol[nod[a].back()];
}
nod[a].pop_back();
}
}
int main()
{
int n,i,mx=-1000;
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
scanf("%d",&sol[i]);
for (i=1;i<n;++i)
{
int a,b;
scanf("%d %d",&a,&b);
nod[a].push_back(b);nod[b].push_back(a);
}
df(1);
for (i=1;i<=n;++i)
if (sol[i]>mx) mx=sol[i];
printf("%d\n",mx);
return 0;
}