Pagini recente » Cod sursa (job #2643548) | Cod sursa (job #3217459) | Cod sursa (job #1189915) | Cod sursa (job #1420412) | Cod sursa (job #1327871)
#include <fstream>
#include <list>
#define DIM 16001
using namespace std;
int n,a[DIM],x,y,mx,s[DIM];
list<int> nod[DIM];
bool v[DIM];
void parcurgere(int k)
{
v[k]=1;
s[k]+=a[k];
for(list<int>::iterator i=nod[k].begin();i!=nod[k].end();++i)
{
if(!v[*i])
{
parcurgere(*i);
if(s[*i]>0)
s[k]+=s[*i];
}
}
if(s[k]>mx)
mx=s[k];
}
int main()
{
FILE *f=fopen("asmax.in","r");
FILE *g=fopen("asmax.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&a[1]);
mx=a[1];
for(int i=2;i<=n;++i)
{
fscanf(f,"%d",&a[i]);
if(a[i]>mx)
mx=a[i];
}
for(int i=1;i<n;++i)
{
fscanf(f,"%d %d",&x,&y);
nod[x].push_back(y);
nod[y].push_back(x);
}
parcurgere(1);
fprintf(g,"%d",mx);
fclose(f);
fclose(g);
return 0;
}