Pagini recente » Cod sursa (job #1696997) | Cod sursa (job #1296351) | Cod sursa (job #2102094) | Cod sursa (job #2302649) | Cod sursa (job #2576427)
#include<bits/stdc++.h>
#define DIM 1010
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int fi,st,a,b,x,n,m,i,aux,d[DIM],c[DIM][DIM],flux;
queue<int> q;
vector<int> v[DIM];
int bfs()
{
int nod;
memset(d,0,sizeof(d));
d[st]=1;
q.push(st);
while(!q.empty())
{
nod=q.front();q.pop();
for(auto it:v[nod]) if(d[it]==0&&c[nod][it])
{
d[it]=d[nod]+1;
q.push(it);
}
}
return d[fi];
}
int dfs(int nod,int cap)
{
int bag=0,r;
if(cap==0) return 0; if(nod==fi) return cap;
for(auto it:v[nod]) if(d[it]==d[nod]+1&&c[nod][it]>=0)
{
r=dfs(it,min(cap-bag,c[nod][it]));
c[nod][it]-=r,c[it][nod]+=r;
bag+=r;
}
return bag;
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b>>x;
v[a].push_back(b);
v[b].push_back(a);
c[a][b]=x;
}
st=1;fi=n;
while(bfs())
{
do{
aux=dfs(st,1000000000);
flux+=aux;
}while(aux!=0);
}
fout<<flux;
return 0;
}