Pagini recente » Cod sursa (job #122252) | Cod sursa (job #2149927) | Cod sursa (job #113196) | Cod sursa (job #2227633) | Cod sursa (job #1275637)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> legaturi [16001];
int valori[16001],maxim=-100001;
int vizitat[16001];
int rezolva(int x)
{
int i,t,f;
vizitat[x]=1;
t=valori[x];
if (t>maxim){maxim=t;}
for (i=0;i<legaturi[x].size();i++)
{
if (vizitat[legaturi[x][i]]==0)
{
f=rezolva(legaturi[x][i]);
if (f>0)
{
t+=f;
if (t>maxim){maxim=t;}
}
}
}
return t;
}
int main()
{
ifstream in("asmax.in");
ofstream out("asmax.out");
int i,n,x,y;
in>>n;
for (i=1;i<=n;i++)
{
in>>valori[i];
if (valori[i]>maxim)
{
maxim=valori[i];
}
}
for (i=1;i<n;i++)
{
in>>x;
in>>y;
legaturi[x].push_back(y);
legaturi[y].push_back(x);
}
vizitat[1]=1;
rezolva(1);
out<<maxim;
}