Cod sursa(job #1136689)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 9 martie 2014 11:00:14
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

#define nmax 16001
#define maxim -1001
ifstream in("asmax.in");
ofstream out("asmax.out");

int n,i,a,b,MAX=maxim;
int val[nmax];
bool viz[nmax];
vector <int> vecin[nmax];

void dfs(int x){
    int j;
    viz[x]=1;
    
    for (j=0; j<vecin[x].size(); j++){
        int vc=vecin[x][j];
        
        if (!viz[vc]){
            dfs(vc);
            val[x]=max(val[x], val[x]+val[vc]);
            MAX=max(MAX, val[x]);
        }
    }
}

int main(){
    
    in >> n;
    
    for (i=1; i<=n; i++)
        in >> val[i],
        MAX=max(MAX, val[i]);
    
    for (i=1; i<n; i++)
        in >> a >> b,
        vecin[a].push_back(b),
        vecin[b].push_back(a);
    
    for (i=1; i<=n; i++)
        if (!viz[i])
            dfs(i);
    
    out << MAX << "\n";
    
    return 0;
}