Pagini recente » Cod sursa (job #1013614) | Cod sursa (job #664567) | Cod sursa (job #2430852) | Cod sursa (job #2894846) | Cod sursa (job #657531)
Cod sursa(job #657531)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> m[16010];
int v[16010],n,maxim=-1000000000;
int profit(int ant,int poz)
{
int i,sum=0,x;
for(i=0;i<m[poz].size();++i)
{
if (m[poz][i]==ant)
continue;
x=profit(poz,m[poz][i]);
if (x>0)
sum+=x;
}
sum+=v[poz];
if(sum>maxim)
maxim=sum;
return sum;
}
int main()
{
int i,p,q;
in>>n;
for(i=1;i<=n;++i)
{
in>>v[i];
}
for(i=1;i<=n-1;++i)
{
in>>p>>q;
m[p].push_back(q);
m[q].push_back(p);
}
profit(0,1);
out<<maxim<<"\n";
return 0;
}