Cod sursa(job #2831115)

Utilizator CalinCruceanu3576Cruceanu CalinCruceanu3576 Data 10 ianuarie 2022 20:49:25
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

vector<vector<int>> adj;
vector<int> cost, sumNod;
vector<bool> viz;
int n;

void initVect()
{
  viz.resize(n + 1, 0);
  cost.resize(n + 1);
  sumNod.resize(n + 1);
  adj.resize(n + 1);
}

void Dfs(int x)
{
  int aux;

  viz[x] = 1;
  sumNod[x] = cost[x];

  for (auto i : adj[x])
     if (viz[i] == 0)
    {
      Dfs(i);
      aux = sumNod[x] + sumNod[i];
      if (sumNod[x] < aux)
        sumNod[x] = aux;
    }
   
}

void Citire()
{
  int i, x, y;
  fin >> n;
  initVect();

  for (i = 1; i <= n; i++)
  {
    fin >> x;
    cost[i] = x;
  }

  for (i = 1; i < n; i++)
  {
    fin >> x >> y;
    adj[x].push_back(y);
    adj[y].push_back(x);
  }
}

void Rezolva()
{
  int i, suMax = -INT_MAX;

  Dfs(1);

  for (i = 1; i <= n; i++)
      if(suMax < sumNod[i])
        suMax = sumNod[i];

  fout<<suMax;
}

int main()
{
  Citire();
  Rezolva();
  return 0;
}