Pagini recente » Cod sursa (job #1153752) | Cod sursa (job #58845) | Cod sursa (job #2751770) | Cod sursa (job #2938126) | Cod sursa (job #397676)
Cod sursa(job #397676)
using namespace std;
#include<fstream>
#include<iostream>
int c[1003][1003],t[1003],w[1003],nw,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++];
if(k==n)
return 1;
for(i=1;i<=n;++i)
if(c[k][i]>0 && t[i]==-1)
{
coada[++d]=i;
t[i]=k;
}
}
return 0;
}
void ek()
{
int k;
while(bfs(1))
{
for(int i=1;i<=nw;++i)
if(t[w[i]]!=-1 && c[w[i]][n]>0)
{
int cmin=1<<30;
t[n]=w[i];
for(k=n;t[k];k=t[k])
if(c[t[k]][k]<cmin)
cmin=c[t[k]][k];
for(k=n;t[k];k=t[k])
{
c[t[k]][k]-=cmin;
c[k][t[k]]+=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;
if(y==n)
w[++nw]=x;
}
ek();
ofstream fout("maxflow.out");
fout<<fmaxim;
return 0;
}