Cod sursa(job #1603337)

Utilizator bogdan2510Ionut Bogdan bogdan2510 Data 17 februarie 2016 13:31:18
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,V[16001],maxim=-20000000,M[16001];
struct Muchie{
    int nod;
    Muchie * next;
};
Muchie * A[16001];
void add(int a, int b){
    Muchie * q;
    q=new Muchie;
    q->nod=b;
    q->next=A[a];
    A[a]=q;
}
void read(){
    f>>n;
    for(int i=1;i<=n;i++){
        f>>V[i];
    }
    int x,y;
    while(f>>x>>y){
        add(x,y);
        add(y,x);
    }
}
int dfs(int nod){
    Muchie * q;
    q=A[nod];
    int suma=V[nod];
    while (q){
        if(!M[q->nod]){
            M[q->nod]=1;
            suma+=dfs(q->nod);
        }
        q=q->next;
    }
    if(suma>maxim){
        maxim=suma;
    }
    if(suma<0){
        return 0;
    }else{
        return suma;
    }
}
int main()
{
    M[1]=1;
    read();
    dfs(1);
    g<<maxim;
    return 0;
}