Cod sursa(job #2920684)

Utilizator db_123Balaban David db_123 Data 25 august 2022 12:57:43
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

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

int n;
vector<int> weights;
vector<vector<int>> graph;
vector<int> dp;
vector<bitset<1>> visited;

void read() {
    cin>>n;
    weights.resize(n+1);
    visited.resize(n+1);
    for(int i=1;i<=n;i++) {
        cin>>weights[i];
    }
    graph.resize(n+1);
    int a,b;
    for(int i=1;i<=n-1;i++) {
        cin>>a>>b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
}

void dfs(int node) {
    visited[node]=1;
    dp[node]=weights[node];
    for(auto i:graph[node]) {
        if(visited[i]==1) {
            continue;
        }
        dfs(i);
        if(dp[i]>0) {
            dp[node]+=dp[i];
        }
    }
}

void solve() {
    dp.resize(n+1);
    dfs(1);
    int res=0;
    for(int i=1;i<=n;i++) {
        res=max(res,dp[i]);
    }
    cout<<res;
}

int main() {

    read();
    solve();
    return 0;
}