Pagini recente » Cod sursa (job #1599604) | Cod sursa (job #2954992) | Cod sursa (job #887912) | Cod sursa (job #2043289) | Cod sursa (job #397630)
Cod sursa(job #397630)
using namespace std;
#include<fstream>
int c[1003][1003],t[1003],fmaxim,n,m;
int bfs(int start)
{
int s,d,i,k,coada[1005];
s=d=1;
coada[s]=start;
for(i=1;i<=n;++i)
t[i]=-1;
t[s]=0;
while(s<=d)
{
k=coada[s++];
for(i=1;i<=n;++i)
if(c[k][i]>0 && t[i]==-1)
{
coada[++d]=i;
t[i]=k;
if(i==n)
return 1;
}
}
return 0;
}
void ek()
{
while(bfs(1))
{
int cmin=1<<30;
for(int i=n;t[i];i=t[i])
if(c[t[i]][i]<cmin)
cmin=c[t[i]][i];
for(int i=n;t[i];i=t[i])
{
c[t[i]][i]-=cmin;
c[i][t[i]]+=cmin;
}
fmaxim+=cmin;
}
}
int main()
{
int x,y,v,i;
ifstream fin("maxflow.in");
fin>>n>>m;
for(i=1;i<=m;++i)
{
fin>>x>>y>>v;
c[x][y]=v;
}
ek();
ofstream fout("maxflow.out");
fout<<fmaxim;
return 0;
}