Cod sursa(job #1307744)

Utilizator robertstrecheStreche Robert robertstreche Data 2 ianuarie 2015 19:05:11
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#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();
}