Pagini recente » Cod sursa (job #853679) | Cod sursa (job #1420714) | Monitorul de evaluare | Clasament preoni4b | Cod sursa (job #3198544)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int N=16001;
vector<int>v[N+1];
int ver[N+1],val[N+1];
int maxi=-1000001;
int parc(int x)
{
ver[x]=1;
int s=val[x],semi;
for(auto y:v[x])
{
if(ver[y]==0)
{
semi=parc(y);
if(semi>0)s=s+semi;
}
}
if(s>maxi)
{
maxi=s;
}
return s;
}
int main()
{
int i,j,n,m,x1,x2,sol;
fin>>n;
for(i=1; i<=n; i++)
fin>>val[i];
for(i=1; i<=n-1; i++)
{
fin>>x1>>x2;
v[x1].push_back(x2);
v[x2].push_back(x1);
}
for(i=1; i<=n; i++)
{
if(ver[i]==0)
{
sol=parc(i);
if(sol>maxi)maxi=sol;
}
}
fout<<maxi;
}