Pagini recente » Cod sursa (job #392571) | Cod sursa (job #841504) | Cod sursa (job #2814097) | Cod sursa (job #572760) | Cod sursa (job #1114487)
#include<list>
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n,viz[16005],v[16005],maxi=-20000;
list<int> a[16005];
void citire()
{ int i,j;
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
while(fin>>i>>j)
{ a[i].push_back(j);
a[j].push_back(i);
}
}
void asmax(int node)
{
list<int>::iterator it;
int i;
viz[node]=1;
for(it=a[node].begin(); it!=a[node].end(); it++)
{ if(!viz[*it] )
{ asmax(*it);
if(v[*it]>0)
v[node]+=v[*it];
}
if(maxi<v[node])
maxi=v[node];
}
}
int main()
{ citire();
int i;
asmax(1);
fout<<maxi;
return 0;
}