Pagini recente » Istoria paginii schimbare-borland/autori | Cod sursa (job #2380903) | Cod sursa (job #1913641) | Cod sursa (job #3226258) | Cod sursa (job #387122)
Cod sursa(job #387122)
#include<cstdio>
#include<fstream>
using namespace std;
int c[1005][1005],n,flow=0,t[1005];
void citire()
{
int m,x,y,z;
ifstream fin("maxflow.in");
fin>>n>>m;
for(;m;m--)
{
fin>>x>>y>>z;
c[x][y]=z;
}
}
int bfs(int s,int d)
{
int coada[1005],st,dr,k,i;
st=dr=1;
for(i=1;i<=n;i++)
t[i]=-1;
coada[st]=s;
t[s]=0;
while(st<=dr)
{
k=coada[st++];
for(i=2;i<=n;i++)
if(t[i]==-1 && c[k][i]>0)
{
coada[++dr]=i;
t[i]=k;
if(i==d)
return 1;
}
}
return 0;
}
void ek()
{
int cmin=110001,i,j;
while(bfs(1,n))
{
cmin=110001;
for(i=n;t[i];i=t[i])
if(c[t[i]][i]<cmin)
cmin=c[t[i]][i];
flow+=cmin;
for(i=n;t[i];i=t[i])
{
c[t[i]][i]-=cmin;
c[i][t[i]]+=cmin;
}
}
}
int main()
{
citire();
ek();
ofstream fout("maxflow.out");
fout<<flow;
return 0;
}