Pagini recente » Cod sursa (job #1633630) | Cod sursa (job #2227344) | Cod sursa (job #1909976) | Cod sursa (job #430619) | Cod sursa (job #1731524)
#include<iostream>
#include<fstream>
#include<vector>
#include<stack>
#define DX 16010
using namespace std;
fstream fin("asmax.in",ios::in),fout("asmax.out",ios::out);
typedef vector<int> VI;
VI v[DX];
int c[DX],maxim=-(DX*1000),n;
void dfs(int nod,int pre)
{
for(auto x:v[nod])
{
if(x!=pre)
{
dfs(x,nod);
if(c[x]>0)
{
c[nod]+=c[x];
}
}
}
maxim=max(maxim,c[nod]);
}
int main()
{
int a,b,i;
fin>>n;
for(i=1;i<=n;i++) fin>>c[i];
while(fin>>a>>b)
{
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1,0);
fout<<maxim<<"\n";
}