Cod sursa(job #2358787)

Utilizator RazvanPanaiteRazvan Panaite RazvanPanaite Data 28 februarie 2019 12:54:01
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
#define DMAX 16010

using namespace std;

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

vector <int> V[DMAX];

bool uz[DMAX];
int Cost[DMAX];
int dp[DMAX];

int n,costmax=-INT_MAX/2;

void citire();
void dfs(int node);

int main()
{int i;
 citire();
 dfs(1);
 for(i=1;i<=n;i++)
     if(dp[i]>costmax)
        costmax=dp[i];
 fout<<costmax<<'\n';
 return 0;
}
void citire()
{int i,x,y;
 fin>>n;
 for(i=1;i<=n;i++)
     fin>>Cost[i];
 for(i=1;i<n;i++)
     {fin>>x>>y;
      V[x].push_back(y);
      V[y].push_back(x);
     }
}
void dfs(int node)
{int i;
 uz[node]=true;
 dp[node]=Cost[node];
 for(i=0;i<V[node].size();i++)
     if(!uz[V[node][i]])
        {dfs(V[node][i]);
         if(dp[V[node][i]]>0)
            dp[node]+=dp[V[node][i]];
        }
}