Pagini recente » Cod sursa (job #2355716) | Cod sursa (job #3121538) | Cod sursa (job #1872339) | Cod sursa (job #1838760) | Cod sursa (job #3236363)
#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,viz;
vector<int>v[dim];
void dfs(int x){
viz[x]=1;
for(auto i: v[x])
if(!viz[i]){
dfs(i);
if(dp[i]>0)
dp[x]+=dp[i];
}
sol=max(sol,dp[x]);
}
int main()
{
cin>>n;
sol=-2e9;
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;
}