Cod sursa(job #2460357)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 23 septembrie 2019 15:07:23
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<vector>
#include<algorithm>
const int NMAX = 16000;
int v[NMAX + 1];
std :: vector <int> m[NMAX + 1];
int dp[NMAX + 1];
void dfs(int nod , int t)
{
  for(int poz = 0; poz < m[nod].size() ; poz ++)
  {
    if(m[nod][poz] != t)
    {
      dfs(m[nod][poz] , nod);
    if(dp[m[nod][poz]] > 0)
      dp[nod] += dp[m[nod][poz]];
    }
  }
}
int main()
{
  freopen("asmax.in" , "r" , stdin);
  freopen("asmax.out" , "w" , stdout);
  int n;
  scanf("%d" , &n);
  for(int i = 1; i <= n ; i ++)
    scanf("%d" , &dp[i]);
  int x , y;
  for(int i = 1; i < n ; i ++)
  {
    scanf("%d%d" , &x , &y);
    m[x].push_back(y);
    m[y].push_back(x);
  }
  dfs(1 , 0);
  int sol = -2000000000;
  for(int i = 1 ; i <= n ; i ++)
    sol =std :: max(sol , dp[i]);
  printf("%d" , sol);
  return 0;
}