Pagini recente » Cod sursa (job #771105) | Cod sursa (job #2439263) | Cod sursa (job #2230385) | Cod sursa (job #1028972) | Cod sursa (job #1941614)
#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;
}