Cod sursa(job #1133445)

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

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

void citire() {

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

}


void dfs(int nod) {

    int vecin,i;
    viz[nod]=1;

    for(i=0;i<v[nod].size();i++) {
        vecin=v[nod][i];
        if(viz[vecin]==0){
        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(viz[i]==0) {
             dfs(i);
        }
}

void afisare() {

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

}

int main() {

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

}