Cod sursa(job #1111379)

Utilizator nicnic28nichita trita nicnic28 Data 18 februarie 2014 20:36:08
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");

const int N=16001;
vector<int> a[N];
int n;
short c[N];
bool v[N];
int s[N];
void dfs(int p){
    v[p]=true;
    int d,q;
    s[p] = c[p];
    for(int i=0 ; i<a[p].size() ; i++){
        q = a[p][i];
        if(!v[q]){
            dfs(q);
            if(s[q]>0){
                s[p]+=s[q];
            }
        }
    }
}

int main()
{
    in>>n;
    for(int i=1 ; i<=n ; i++){
        in>>c[i];
    }
    int x,y;
    while(in>>x>>y){
        a[x].push_back(y);
        a[y].push_back(x);
    }
    dfs(1);
    int smax=-1<<30;
    for(int i=1 ; i<=n ; i++){
        if(s[i]>smax){
            smax=s[i];
        }
    }
    out<<smax;
    return 0;
}