Pagini recente » Cod sursa (job #1019138) | Cod sursa (job #1882360) | Cod sursa (job #1335000) | Cod sursa (job #1059458) | Cod sursa (job #3247319)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int dp[16002],maxim=-1e9;
vector<vector<int>> v;
vector<bool> checked;
void dfs(int nod){
checked[nod]=true;
for(int i=0;i<v[nod].size();i++){
if(checked[v[nod][i]]==false){
dfs(v[nod][i]);
if(dp[v[nod][i]]>0)
dp[nod]+=dp[v[nod][i]];
}
}
maxim=max(maxim,dp[nod]);
}
int main()
{
int n;
cin>>n;
v.resize(n+1);
checked.resize(n+1,false);
for(int i=1;i<=n;i++)
cin>>dp[i];
int a,b;
while(cin>>a>>b){
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
cout<<maxim;
}