Pagini recente » Cod sursa (job #3199493) | Cod sursa (job #401018) | Cod sursa (job #1526955) | Cod sursa (job #2226676) | Cod sursa (job #834916)
Cod sursa(job #834916)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int N=16001;
vector <int> v[N];
int val[N], n, sum[N];
bool viz[N];
void dfs(int x)
{
viz[x]=true;
sum[x]=val[x];
for(int i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
{
dfs(v[x][i]);
if(sum[v[x][i]]>0)
sum[x]+=sum[v[x][i]];
}
}
int main()
{
int iTemp1, iTemp2, vmax=-1000000000;
in>>n;
for(int i=1;i<=n;i++)
in>>val[i];
for(int i=0;i<n;i++)
{
in>>iTemp1>>iTemp2;
v[iTemp1].push_back(iTemp2);
v[iTemp2].push_back(iTemp1);
}
dfs(1);
for(int i=1;i<=n;i++)
{
if(sum[i]>vmax)
vmax=sum[i];
}
out<<vmax;
in.close();
out.close();
}