Cod sursa(job #1756212)

Utilizator irinapatularuPatularu Irina irinapatularu Data 12 septembrie 2016 10:36:09
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <limits.h>
 
#define NMAX 16001
using namespace std;
 
int n;
int weights[NMAX];
int visited[NMAX], solutie[NMAX];
vector< list< int> > adList(NMAX);
int maxValue = INT_MIN;
 
void dfs(int node){
    visited[node] = 1;
    solutie[node] = weights[node];
    list<int> :: iterator it = adList[node].begin();
    while(it != adList[node].end()){
        int neigh = *it;
        if(visited[neigh] == 0){
            dfs(neigh);
            if(solutie[neigh] > 0)
                solutie[node] += solutie[neigh];
            if(solutie[node] > maxValue)
                maxValue = solutie[node];
        }
        it ++;
    }
}
 
int main(){ 
    int a, b;
    ifstream f("asmax.in");
    ofstream g("asmax.out");
    f >> n;
    for(int i = 1; i <= n; i++)
        f >> weights[i];
 
    maxValue = weights[1];
 
    for(int i = 0; i < n - 1; i++){
        f >> a >> b;
        adList[a].push_back(b);
        adList[b].push_back(a);
    }
    f.close();
 
    dfs(1);
    g << maxValue;
    g.close();
 
    return 0;
}