Pagini recente » Cod sursa (job #2046382) | Cod sursa (job #1506531) | Cod sursa (job #768040) | Cod sursa (job #2724876) | Cod sursa (job #713490)
Cod sursa(job #713490)
#include <fstream>
#include <vector>
using namespace std;
#define dim 160005
vector <int> v[dim];
int viz[dim], d[dim], rez=-(1<<30);
void dfs(int nod)
{
viz[nod]=1;
for(int k=0;k<v[nod].size();++k)
if(viz[v[nod][k]]==0)
{
dfs(v[nod][k]);
if(d[v[nod][k]]>0)
d[nod]+=d[v[nod][k]];
}
}
int main()
{
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, i, a, b;
fin>>n;
for(i=1;i<=n;++i)
fin>>d[i];
for(i=1;i<n;++i)
{
fin>>a >>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
for(i=1;i<=n;++i)
if(rez<d[i])
rez=d[i];
fout<<rez;
return 0;
}