Cod sursa(job #3365434)

Utilizator Andrei1209Andrei Mircea Andrei1209 Data 21 septembrie 2026 10:08:38
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");

const int Nmax = 16005;
int val[Nmax], n, rasp = -1005, dp[Nmax];
vector<int> vecini[Nmax];
bool viz[Nmax];
void bfs( int nod )
{
   //fout << "nod = " << nod <<endl;
   if ( viz[nod] == 1 )
      return ;
   viz[nod] = 1;
   int i;
   dp[nod] = val[nod];
   for ( i = 0; i < vecini[nod].size(); ++i )
   {
      int vecin = vecini[nod][i];
      bfs(vecin);
      if ( dp[vecin] > 0 )
         dp[nod] += dp[vecin];
   }
   rasp = max(rasp, dp[nod]);
}
int main()
{
   int i;
    fin >> n;
    for ( i = 1; i <= n; ++i )
    {
      fin >> val[i];
    }

    for ( i = 1; i < n; ++i )
    {
       int a, b;
       fin >> a >> b;
       vecini[a].push_back(b);
       vecini[b].push_back(a);
    }

    bfs(1);
    fout << rasp;
    return 0;
}