Cod sursa(job #1133440)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 4 martie 2014 21:41:13
Problema Asmax Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;

int N,val[16010],grad[16010],start,maxim=-99999999;
vector <int> v[16010];

void citire() {

    ifstream in("asmax.in");
    int i,x,y;
    in>>N;
    for(i=1;i<=N;i++)
        in>>val[i];
    for(i=1;i<=N-1;i++) {
        in>>x>>y;
        grad[y]++;
        v[x].push_back(y);
    }
    in.close();

}


void dfs(int nod) {

    int vecin,i;
    for(i=0;i<v[nod].size();i++) {
        vecin=v[nod][i];
        dfs(vecin);
        if(val[vecin]>0)
            val[nod]+=val[vecin];
        if(val[nod]>maxim)
            maxim=val[nod];
    }
}

void solve() {

    int i;
    for(i=1;i<=N;i++)
        if(grad[i]==0) {
            start=i;
            break;
        }
    maxim=val[start];
    dfs(start);

}

void afisare() {

    ofstream out("asmax.out");
    out<<maxim<<'\n';
    out.close();

}

int main() {

    citire();
    solve();
    afisare();
    return 0;

}