Pagini recente » Cod sursa (job #3209215) | Monitorul de evaluare | Cod sursa (job #1106954) | Cod sursa (job #2384781) | Cod sursa (job #528109)
Cod sursa(job #528109)
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#define pb push_back
vector<int> G[16005];
ofstream fout("asmax.out");
int N,M,v[16005],dp[16006],viz[16005],sol=-0x3f3f3f3f;
void dfs(int x)
{
vector<int>::iterator it;
for(it=G[x].begin();it<G[x].end();it++)
{ if(!viz[*it])
{
viz[*it]=1;
dfs(*it);
if(dp[*it]>0)
dp[x]+=dp[*it];
}
if(dp[x]>sol)
sol=dp[x];
}
}
void cit()
{
ifstream fin("asmax.in");
int i,x,y;
fin>>N;
for(i=1;i<=N;i++)
{
fin>>dp[i];
}
for(i=1;i<=N-1;i++)
{
fin>>x>>y;
G[x].pb(y);
G[y].pb(x);
}
fin.close();
}
int main()
{
cit();
int i;
viz[1]=1;
dfs(1);
fout<<sol<<"\n";
fout.close();
return 0;
}