Pagini recente » Cod sursa (job #1122933) | Cod sursa (job #1256385) | Cod sursa (job #1760189) | Cod sursa (job #1350164) | Cod sursa (job #3247987)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("asmax.in");
ofstream cout ("asmax.out");
struct ura{
int val;
vector <int> fi;
};
vector<ura> v;
int maxi=-1;
int sum(int i)
{
int suma=v[i].val;
for(int j=0;j<v[i].fi.size();j++)
{
suma+=max(0,sum(v[i].fi[j]));
}
maxi=max(maxi,suma);
return suma;
}
int main()
{
int n;
cin>>n;
v.resize(n+1);
for(int i=1;i<=n;i++)
{
cin>>v[i].val;
}
vector <bool> startfind;
startfind.resize(n+1);
for(int i=1;i<=n-1;i++)
{
int a,b;
cin>>a>>b;
v[a].fi.push_back(b);
startfind[a]=true;
startfind[b]=true;
}
int strt;
for(int i=1;i<=n;i++)
{
if(!startfind[i])
strt=i;
}
strt=sum(strt);
cout<<maxi;
return 0;
}