Pagini recente » Cod sursa (job #800977) | Cod sursa (job #658813) | Statistici Monika Zarudzka (mzarudzka) | Cod sursa (job #1396168) | Cod sursa (job #1275614)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> legaturi [16001];
int valori[16001],maxim=-10001;
bool evarf[16001];
int rezolva(int x)
{
int i,t=0;
for (i=0;i<legaturi[x].size();i++)
{
t+=rezolva(legaturi[x][i]);
if (t>maxim){maxim=t;}
}
t+=valori[x];
if (t>maxim){maxim=t;}
if (t<0){return 0;}
else {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];
evarf[i]=true;
if (valori[i]>maxim)
{
maxim=valori[i];
}
}
for (i=1;i<n;i++)
{
in>>x;
in>>y;
legaturi[x].push_back(y);
evarf[y]=false;
}
for (i=1;i<=n;i++)
{
if (evarf[i]==true)
{
x=i;
break;
}
}
rezolva(x);
out<<maxim;
}