Pagini recente » Cod sursa (job #1422821) | Cod sursa (job #2526906) | Cod sursa (job #3245747) | Cod sursa (job #1250884) | Cod sursa (job #3223157)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int v[16001];
vector<vector<int>> G;
bool viz[100001];
int s;
int dfs(int node)
{
viz[node]=true;
for(int vec:G[node])
{
if(viz[vec]==false)
{
dfs(vec);
if(v[vec]>0)
{
v[node]=v[node]+v[vec];
}
}
}
if(s<v[node])
{
s=v[node];
}
return s;
}
int main()
{
int n;
cin>>n;
G.resize(n+1);
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
int a,b;
for(int i=1;i<=n-1;i++)
{
cin>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
cout<<dfs(1);
return 0;
}