Cod sursa(job #672860)

Utilizator EstarDaian Dragos Estar Data 3 februarie 2012 12:10:53
Problema Flux maxim Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 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(c>0||!i){
    int send=0;
    if(c>a[i].next[j].c)
    send=a[i].next[j].c;
    else send=c;
    c-=send;
    if(!i)send=a[i].next[j].c;
    gofrom(a[i].next[j].i,send);
    }else break;
  }
}

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(i,0);
    }
    fo<<sol;
    return 0;
}