Pagini recente » Cod sursa (job #2347881) | Cod sursa (job #669514) | Cod sursa (job #2589170) | Cod sursa (job #2585114) | Cod sursa (job #2567517)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,val[1<<15];
queue <int> q;
set <int> v[1<<15];
int main()
{ f>>n;
for(int i=1; i<=n; i++)
f>>val[i];
for(int i=1,x,y; f>>x>>y; i++)
{ v[x].insert(y);
v[y].insert(x);
}
for(int i=1; i<=n; i++)
if(v[i].size()==1)
q.push(i);
while(!q.empty())
{ int nod=q.front();
q.pop();
set <int> :: iterator it;
for(it=v[nod].begin(); it!=v[nod].end(); it++)
{ v[*it].erase(v[*it].find(nod));
if(v[*it].size()==1)
q.push(*it);
val[*it]=max(val[*it],val[*it]+val[nod]);
}
}
g<<*max_element(val+1,val+n+1);
f.close(); g.close(); return 0;
}