Pagini recente » Cod sursa (job #1642742) | Cod sursa (job #3287623) | Cod sursa (job #2114622) | Cod sursa (job #197511) | Cod sursa (job #3155726)
#include <fstream>
#include <set>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,s[16001],ok[16001],m[16001],maxim,st[16001],nr,S;
set<int> a[16001];
void dfs(int nod)
{
ok[nod]=1;
m[nod]=0;
for(set<int>::iterator it=a[nod].begin();it!=a[nod].end();it++)
{
if(ok[*it]==0)
{
dfs(*it);
if(s[*it]>0) s[nod] += s[*it];
}
}
maxim = max(maxim, s[nod]);
}
int main()
{
int x,y,i;
f>>n;
for(i=1;i<=n;i++)
{
f>>s[i];
S+= s[i];
}
while(f>>x>>y)
{
a[x].insert(y);
a[y].insert(x);
}
maxim=-2e9;
dfs(1);
g<<maxim;
return 0;
}