Pagini recente » Cod sursa (job #1792226) | Cod sursa (job #639150) | Cod sursa (job #1682705) | Cod sursa (job #2975629) | Cod sursa (job #2370352)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ofstream fo("asmax.out");
ifstream fi("asmax.in");
int n;
int dp[16005];
int V[16006];
bool viz[16006];
int a,b;
vector <int> vecini[16005];
int maxim=-1000000000;
int DFS(int curent)
{
viz[curent]=1;
for(auto G:vecini[curent])
if(viz[G]==false)
dp[curent]=max(dp[curent],DFS(G)+dp[curent]);
maxim=max(dp[curent],maxim);
return dp[curent];
}
int main()
{fi>>n;
for(int i=1;i<=n;i++){fi>>V[i];dp[i]=V[i];}
while(fi>>a>>b){vecini[a].push_back(b);vecini[b].push_back(a);}
DFS(1);
fo<<maxim;
return 0;
}