Pagini recente » Cod sursa (job #455319) | Cod sursa (job #1753476) | Cod sursa (job #1478044) | Cod sursa (job #431148) | Cod sursa (job #1307744)
#include <fstream>
#include <bitset>
#include <queue>
#define lmax 16005
#define pb push_back
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
bitset <lmax>ap;
int n,m,x,y,maxi;
int ma[lmax];
queue <int>q;
vector <int>v[lmax];
vector <int>::iterator it;
int main()
{
f>>n;
for (int i=1;i<=n;i++)
f>>ma[i];
for (int i=1;i<=n-1;i++)
{
f>>x>>y;
v[x].pb(y);
v[y].pb(x);
}
for (int i=1;i<=n;i++)
if (v[i].size()==1)
{
q.push(i);
ap[i]=1;
}
while (q.size())
{
int nod=q.front();
q.pop();
for (it=v[nod].begin();it!=v[nod].end();it++)
{
if (ma[nod]>0)
{
ap[*it]=1;
ma[*it]+=ma[nod];
}
if (!ap[*it])
q.push(*it);
}
}
for (int i=1;i<=n;i++)
if (ma[i]>maxi)
maxi=ma[i];
g<<maxi;
f.close();
g.close();
}