Cod sursa(job #3147406)

Utilizator ililogIlinca ililog Data 26 august 2023 10:03:03
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#include<climits>

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

int n;
vector< vector<int> > muchii;
int viz[16001];
int dp[16001];
int maxim = INT_MIN;

void dfs(int k) {
    
    viz[k] = 1;
    
    for (int i = 0; i<muchii[k].size(); i++) {
        int nod = muchii[k][i];
        if (viz[nod] == 0) {
            dfs(nod);
            dp[k] += dp[nod];
        }
    }
    cout << k << " " << dp[k] << endl;
    
    maxim = max(maxim, dp[k]);
    
    if (dp[k] < 0) {
        dp[k] = 0;
    }
}

int main() {
    
    fin >> n;
    for (int i = 1; i<=n; i++) {
        fin >> dp[i];
        maxim = max(maxim, dp[i]);
    }
    muchii.resize(n+1);
    
    for (int i = 1; i<=n-1; i++) {
        int a, b;
        fin >> a >> b;
        muchii[a].push_back(b);
        muchii[b].push_back(a);
    }
    
    dfs(1);
    
    /*int maxim = INT_MIN;
    for (int i = 1; i<=n; i++) {
        if (dp[i] > maxim) {
            maxim = dp[i];
        }
    }
    */
    fout << maxim;
    
    
    
    return 0;
}