Cod sursa(job #3338115)

Utilizator Err0rSome Error Err0r Data 31 ianuarie 2026 16:13:31
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <climits>
#include <algorithm>
#include <vector>
#include <cstring>
#define DIM 16001
using namespace std;

ifstream cin("asmax.in");
ofstream cout("asmax.out");

// declaring
int n, k, bestmin, x, y;
int sol=INT_MIN, s[DIM], val[DIM], viz[DIM];
vector<int> l[DIM];

/// dfs function
void dfs(int nod)
{
   viz[nod] = 1;
   s[nod] = val[nod];
   for (int i = 0; i < l[nod].size(); i++)
   {
      if (viz[l[nod][i]] == 0)
      {
         dfs(l[nod][i]);
         if (s[l[nod][i]]>0){
            s[nod]=s[nod]+s[l[nod][i]];
         }
      }
   }
  if (s[nod]>sol){
   sol=s[nod];
  }
}


   int main()
   {
      ////reading
      cin >> n;
      for (int i=1;i<=n;i++){
         cin >> val[i];
      }
      for (int i = 1; i < n; i++)
      {
         cin >> x >> y;
         l[x].push_back(y);
         l[y].push_back(x);
      }

      ////algorithm
      dfs(1);

      
      ////outputting
      cout << sol;


      // test
      /*for (int i = 0; i <= n; i++)
       {
          for (int j = 0; j < l[i].size(); j++)
          {
             cout <<l[i][j] << " ";
          }
          cout << endl;}*/
   }