Pagini recente » Cod sursa (job #2224033) | Cod sursa (job #1983555) | Cod sursa (job #2019586) | Cod sursa (job #1256150) | Cod sursa (job #1444284)
#include<fstream>
#include<vector>
using namespace std;
#define inf 0x7fffffff
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<bool> viz;
vector<int> val;
vector<vector<int> >gr;
int n;
void read()
{
f>>n;
int aux,aux1;
val.resize(n+1);
viz.resize(n+1);
gr.resize(n+1,vector<int> ());
for(int i=1;i<=n;++i)
{
f>>val[i];
}
for(int i=1;i<n;++i)
{
f>>aux>>aux1;
gr[aux].push_back(aux1);
gr[aux1].push_back(aux);
}
}
void dfs(int nod)
{
viz[nod]=true;
for(auto it=gr[nod].begin();it!=gr[nod].end();++it)
{
if(!viz[*it])
{
dfs(*it);
if(val[*it]>0)
val[nod]+=val[*it];
}
}
}
void solve()
{
dfs(1);
int ans=-inf;
for(int i=1;i<=n;++i)
{
ans=max(ans,val[i]);
}
g<<ans;
}
int main()
{
read();
solve();
}