Cod sursa(job #674737)

Utilizator EstarDaian Dragos Estar Data 6 februarie 2012 18:08:38
Problema Flux maxim Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fi("maxflow.in");
ofstream fo("maxflow.out");

struct muchie {
    int i,c;
    muchie(int i1 , int c1) {
        i=i1;
        c=c1;
    }
};

struct nod {
    int i;
    vector<muchie> next;
    nod(int j) {
        i=j;
    };
};

int n , m,sol;
vector<nod> a;

void gofrom(int i,int c) {
    if(i==n-1) {
        sol+=c;
        return;
    }
    for(int j=0; j<(signed)a[i].next.size(); j++) {
        if(!i)c=a[i].next[j].c;
        if(min(a[i].next[j].c,c)>0) {
            int Min=min(a[i].next[j].c,c),next=a[i].next[j].i;
            a[i].next[j].c-=Min;
            c-=Min;
            gofrom(next,Min);
        }
    }
}

int main() {
    fi>>n>>m;
    for(int i=0; i<n; i++)
        a.push_back(nod(i));
    for(int i=0; i<m; i++) {
        int x , y, c;
        fi>>x>>y>>c;
        a[x-1].next.push_back(muchie(y-1,c));
    }
    //for(int i=0;i<n;i++){
    gofrom(0,0);
    //}
    fo<<sol;
    return 0;
}