Cod sursa(job #1941614)

Utilizator Garen456Paun Tudor Garen456 Data 27 martie 2017 14:55:27
Problema Flux maxim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <queue>
#define inf 110050000
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int d[1001][1001],t[1001],n,m;
queue <int> C;
bool viz[1001];
void BFS()
{   for(int i=1;i<=n;++i) viz[i]=0;
    C.push(1);
    int i,v; viz[1]=1;
    while(!C.empty())
    { v=C.front();
      C.pop();
      for(i=1;i<=n;++i)
          if( d[v][i]>0 && viz[i]==0)
          { viz[i]=1;
              t[i]=v;
              if(i==n) break;
              else C.push(i);
          }

    }

}

int main()
{  int i,x,y,fl,maxfl;
    fin>>n>>m;
    for(i=1;i<=m;++i)
    { fin>>x>>y;
        fin>>d[x][y];
    }
    BFS(); maxfl=0;
    while(viz[n]==1)
    {
        for(i=1;i<=n;++i)
       if(d[i][n]>0)
       {
        x=i; fl=d[i][n];
        while(x!=1)
            fl=min(fl,d[t[x]][x]),x=t[x];
        maxfl+=fl;
        x=i;
        d[i][n]-=fl;
        d[n][i]+=fl;
        while(x!=1)
        { d[t[x]][x]-=fl;
          d[x][t[x]]+=fl;
          x=t[x];
        }
       }
     BFS();
    }
    fout<<maxfl;
    return 0;
}