Pagini recente » Cod sursa (job #2271044) | Cod sursa (job #2112997) | Cod sursa (job #1814020) | Cod sursa (job #1361471) | Cod sursa (job #386884)
Cod sursa(job #386884)
#include<fstream>
using namespace std;
int t[1005],n,m,c[1005][1005],flux_maxim;
void eK();
int bfs();
int main()
{
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
//fout<<flux_maxim;
//fout<<endl;
fin>>n>>m;
for(;m;m--)
{
int x,y,z;
fin>>x>>y>>z;
c[x][y]=z;
}
eK();
fout<<flux_maxim;
return 0;
}
int bfs()
{
int coada[1005], st=1,dr=1;
for(int i=1;i<=n;++i)
t[i]=-1;
t[1]=0;
coada[1]=1;
while(st<=dr){
int k=coada[st];
for(int i=1;i<=n;++i)
if(c[k][i]>0 && t[i]==-1){
coada[++dr]=i;
t[i]=k;
if(i==n)
return 1;
}
st++;
}
return 0;
}
void eK()
{
while(bfs())
{
int cmin=1<<30;
for(int i=n; t[i] ;i=t[i])
if(cmin>c[t[i]][i])
cmin=c[t[i]][i];
flux_maxim+=cmin;
for(int i=n; t[i] ;i=t[i]){
c[t[i]][i] -= cmin;
c[i][t[i]] += cmin;
}
}
}