Pagini recente » Cod sursa (job #291696) | Cod sursa (job #2372111) | Cod sursa (job #1572927) | Cod sursa (job #2863359) | Cod sursa (job #3155730)
#include <fstream>
#include <set>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n,i,j,viz[16005],s[16005],ma[16005],mi,x,y,k,a[16005],S,M,sol;
set <int> v[16005];
void dfs(int nod)
{
viz[nod]=1;
s[nod]=a[nod];
ma[nod]=0;
for (set<int>::iterator i=v[nod].begin();i!=v[nod].end();i++)
{
if (viz[*i]==0) {dfs(*i);
if (s[*i]>0) s[nod]+=s[*i];}
}
sol=max(sol,s[nod]);
}
int main()
{
fin >>n;
for (i=1;i<=n;i++)
{
fin >>a[i];
S=S+a[i];
}
while (fin >>x>>y)
{
v[x].insert(y);
v[y].insert(x);
}
sol=-2e9;
dfs(1);
fout <<sol;
return 0;
}