Cod sursa(job #2600328)

Utilizator victorzarzuZarzu Victor victorzarzu Data 12 aprilie 2020 13:42:11
Problema Asmax Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, cost[16005];
vector<int> graf[16005];
int val[16005];

void Read()
{
  f>>n;
  for(int i = 1;i <= n;++i)
    f>>cost[i];
  int x, y;
  for(int i = 1;i < n;++i)
  {
    f>>x>>y;
    graf[x].push_back(y);
    graf[y].push_back(x);
  }
}

void DFS(int nod)
{
  val[nod] = cost[nod];
  cost[nod] = 0;
  for(vector<int>::iterator it = graf[nod].begin();it != graf[nod].end();++it)
    if(cost[*it])
    {
      DFS(*it);
      if(val[*it] > 0)
        val[nod] += val[*it];
    }
}

void Solve()
{
  DFS(1);
  int maxim = -9999999999999;
  for(int i = 1;i <= n;++i)
    maxim = max(maxim, val[i]);
  g<<maxim;
}

int main()
{
  Read();
  Solve();
  return 0;
}