Pagini recente » Cod sursa (job #1165512) | Cod sursa (job #1029846) | Cod sursa (job #2423176) | Cod sursa (job #958790) | Cod sursa (job #2670150)
/// BMDesktop
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
#include <deque>
#define inf 2000000000
#define dim 1007
using namespace std;
string nameProb="test";
ifstream fin(nameProb+".in");
ofstream fout(nameProb+".out");
int srs,dst;
vector<int> L[dim];
int d[dim],c[dim][dim],n,m,flux;
bool bfs(){
memset(d,0,sizeof(d));
deque<int> q;
q.push_back(srs);
d[srs]=1;
while(q.size()){
int nod=q.front();
q.pop_front();
for(auto it:L[nod]){
if(d[it]==0&&c[nod][it]>0){
d[it]=d[nod]+1;
q.push_back(it);
}
}
}
return d[dst];
}
int flx(int nod,int cap){
int r,fnod=0;
if(cap==0)
return 0;
if(nod==dst)
return cap;
for(auto it:L[nod]){
if(d[it]==d[nod]+1&&c[nod][it]>0){
r=flx(it,min(cap-fnod,c[nod][it]));
c[nod][it]-=r;
//c[it][nod]+=r;
fnod+=r;
}
}
return fnod;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,cap;
fin>>x>>y>>cap;
L[x].push_back(y);
L[y].push_back(x);
c[x][y]=cap;
}
srs=1;
dst=n;
while(bfs()){
flux+=flx(srs,inf);
}
fout<<flux;
}