Cod sursa(job #1888521)

Utilizator alexionpopescuPopescu Ion Alexandru alexionpopescu Data 22 februarie 2017 10:17:33
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> a[20001];
int c[20001],n,Max=-999999;
bool v[20001];
int dfs(int k){
    int x,i,w;
    x=c[k];
    v[k]=1;
    for(i=0;i<a[k].size();i++)
        if(!v[a[k][i]]){
            w=dfs(a[k][i]);
            if(w>0)
                x+=w;
        }
    Max=max(Max,x);
    return x;
}
int main(){
    int i,j,h;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>c[i];
    for(h=1;h<=n;h++){
        fin>>i>>j;
        a[i].push_back(j);
        a[j].push_back(i);
    }
    fin.close();
    dfs(1);
    fout<<Max;
    fout.close();
    return 0;
}