Cod sursa(job #2756004)

Utilizator dianasimionSimion Diana dianasimion Data 29 mai 2021 01:05:04
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");

#define NMAX 16001
vector<int> val(NMAX);
int N;
vector<int> adj[NMAX];

void dfs(int node, vector<int>& visited, int& sum, int& maxsum) {
    visited[node] = 1;
    sum += val[node - 1];

    // if (sum > maxsum) {
    //     maxsum = sum;
    // }

    for (auto neigh : adj[node]) {
        if (!visited[neigh]) {
            dfs(neigh, visited, sum, maxsum);
        }
    }

    //sum -= val[node];
}

int main() {
    
    fin >> N;
    for (int i = 1; i <= N; i++) {
        fin >> val[i];
    }

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

    vector<int> visited(N + 1);
    int maxsum = INT32_MIN;

    for (int i = 1; i <= N; i++) {
        int sum = 0;

        if (!visited[i]) {
            dfs(i, visited, sum, maxsum);
        }

        if (sum > maxsum) {
            maxsum = sum;
        }
    }

    fout << maxsum << endl;

    return 0;
}