Pagini recente » Cod sursa (job #2635987) | Cod sursa (job #3181352) | Cod sursa (job #93311) | Cod sursa (job #1668208) | Cod sursa (job #1673657)
#include <iostream>
#include <fstream>
#include <vector>
#define DX 16010
using namespace std;
fstream fin("asmax.in",ios::in),fout("asmax.out",ios::out);
vector<int> v[DX];
int cost[DX],n,maxi;
void dfs(int nod,int pre)
{
int i,t=0;
for(i=0;i<v[nod].size();i++)
{
if(v[nod][i]!=pre)
{
dfs(v[nod][i],nod);
if(cost[v[nod][i]]>=0) cost[nod]+=cost[v[nod][i]];
}
}
maxi=max(maxi,cost[nod]);
}
int main()
{
int a,b,i,j;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>cost[i];
}
while(fin>>a>>b)
{
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1,0);
fout<<maxi;
}