Cod sursa(job #2780747)

Utilizator BriannaBrianna Stan Brianna Data 7 octombrie 2021 19:30:44
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector<vector<int>> adj;
vector<int> cost,visited,dp;
int s=0;
void dfs(int u)
{
    visited[u]=true;
    dp[u]=cost[u];
    for(int v:adj[u])
    {
        if(visited[v]==false) {
            dfs(v);
            dp[u] = max(dp[u], dp[u] + dp[v]);
        }
    }
}
int main() {

    int n,a,b;
    in>>n;
    adj.resize(n+1);
    cost.resize(n+1);
    dp.resize(n+1,0);
    visited.resize(n+1);
    for(int i=1;i<=n;i++)
        in>>cost[i];
    for(int i=1;i<=n-1;i++)
    {
        in>>a>>b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1);
    int maxi=-1;
    for(int i=1;i<=n;i++)
    {
        maxi=max(maxi,dp[i]);
    }
    out<<maxi;
    return 0;
}