Pagini recente » Cod sursa (job #2246568) | Cod sursa (job #1685977) | Cod sursa (job #873306) | Cod sursa (job #1824436) | Cod sursa (job #3236359)
#include <fstream>
#include <vector>
#include <bitset>
#define dim 16002
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int n,dp[dim],x,y,root,sol;
bitset<dim>grad;
vector<int>v[dim];
void dfs(int x){
for(auto i: v[x]){
dfs(i);
dp[x]=max(dp[x],dp[x]+dp[i]);
sol=max(sol,dp[x]);
}
}
int main()
{
cin>>n;
sol=-10000;
for(int i=1;i<=n;i++)
cin>>dp[i];
for(int i=1;i<n;i++){
cin>>x>>y;
v[x].push_back(y);
grad[y]=1;
}
for(int i=1;i<=n;i++)
if(!grad[i]){
root=i;
break;
}
dfs(root);
cout<<sol;
return 0;
}