Cod sursa(job #631486)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 8 noiembrie 2011 10:45:20
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
vector<int>v[16003];
int s[16003],Max,n,Val[16003];
bool uz[16003];
void dfs(int x)
{
   s[x]=Val[x];
   for(vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
   if(!uz[*it])
   {
      uz[*it]=1;
      dfs(*it);
      if(s[*it]>0) s[x]+=s[*it];
      if(Max<s[x]) Max=s[x];
   }
  
}
int main()
{
   int x,y,i;
   ifstream fi("asmax.in");
   ofstream fo("asmax.out");
   fi>>n;
   for(i=1;i<=n;i++) fi>>Val[i];
   for(i=0;i<n;i++)
   {
      fi>>x>>y;
      v[x].push_back(y);
      v[y].push_back(x);
   }
   Max=Val[1];
   uz[1]=1;
   dfs(1);
   fo<<Max<<"\n";
   return 0;
}