Pagini recente » Cod sursa (job #654097) | Cod sursa (job #1770056) | Cod sursa (job #2055893) | Cod sursa (job #1037808) | Cod sursa (job #583418)
Cod sursa(job #583418)
using namespace std;
#include<fstream>
#include<vector>
int n,m;
vector <int> v[1010];
int c[1010][1010],f[1010][1010];
int t[1010],coada[1001000],viz[1010];
int BFS()
{int i,nr=2,nod,j,k,vec;
for(i=0;i<=n;viz[i]=0,i++);
viz[1]=1;
coada[1]=1;
for(i=1;i<nr;i++)
{nod=coada[i];
k=v[nod].size();
for(j=0;j<k;j++)
{vec=v[nod][j];
if(viz[vec]==0&&c[nod][vec]>f[nod][vec])
{viz[vec]=1;
t[vec]=nod;
coada[nr++]=vec;
if(vec==n)
return 1;
}
}
}
return 0;
}
void citire()
{int x,y,e,i;
ifstream in("maxflow.in");
in>>n>>m;
for(i=0;i<m;i++)
{in>>x>>y>>e;
v[x].push_back(y);
v[y].push_back(x);
c[x][y]=e;
}
in.close();
}
int main()
{int i,flow,mn,INF=1<<30;
citire();
for(flow=0;BFS();flow+=mn)
{mn=INF;
for(i=n;i>1;i=t[i])
mn=min(mn,c[t[i]][i]-f[t[i]][i]);
for(i=n;i>1;i=t[i])
{f[t[i]][i]+=mn;
f[i][t[i]]-=mn;
}
}
ofstream out("maxflow.out");
out<<flow<<'\n';
out.close();
return 0;
}