Pagini recente » Cod sursa (job #200524) | Cod sursa (job #2362649) | Cod sursa (job #585963) | Cod sursa (job #1233364) | Cod sursa (job #1684372)
#include <fstream>
#include <vector>
using namespace std;
#define NMax 16005
vector <int> G[NMax];
int cost[NMax],t[NMax];
int n,i;
int maxsum=-16000000;
int dfs(int x)
{
int s,aux;
s=cost[x];
for(unsigned i=0;i<G[x].size();++i)
if(G[x][i]!=t[x])
{
t[G[x][i]]=x;
aux=dfs(G[x][i]);
if(aux>0)
s+=aux;
}
return s;
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
f>>n;
for(i=1;i<=n;i++) f>>cost[i];
for(i=1;i<=n;i++)
{
int a,b;
f>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
maxsum=max(maxsum,dfs(1));
g<<maxsum;
return 0;
}