Pagini recente » Cod sursa (job #1724692) | Cod sursa (job #251763) | Cod sursa (job #2810349) | Cod sursa (job #52685) | Cod sursa (job #1772658)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n,MAX=-1005,cost[16005];
bool viz[16005];
vector <int> G[16005];
int dfs(int poz)
{
viz[poz]=1;
int sum=cost[poz];
for(int i=0;i<G[poz].size();i++)
if(viz[G[poz][i]]!=1)
{
int creanga;
creanga=dfs(G[poz][i]);
if(creanga+sum>sum)
sum+=creanga;
}
if(sum>MAX)
MAX=sum;
return sum;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>cost[i];
for(int i=1;i<n;i++)
{
int a,b;
fin>>a>>b;
G[a].push_back(b);
G[b].push_back(a);
}
int x=dfs(1);
fout<<MAX;
return 0;
}