Pagini recente » Cod sursa (job #2375034) | Cod sursa (job #1425231) | Cod sursa (job #117001) | Cod sursa (job #599753) | Cod sursa (job #2663377)
#include <fstream>
#include <vector>
#include <queue>
#define MX 2000000000
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
vector <int> a[1004];
queue <int> q;
int v[1004],c[1004][1004],f[1004][1004],t[1004],n,m,x,y,z,s;
int bfs()
{
for(int i=0;i<=1000;i++)
v[i]=0;
v[1]=1;
q.push(1);
bool k=false;
while(q.empty()!=1)
{
int i=q.front();
q.pop();
for(int j=0;j<a[i].size();j++)
{
int vecin=a[i][j];
if(v[vecin]==0 && c[i][vecin]>f[i][vecin])
{
v[vecin]=1;
q.push(vecin);
t[vecin]=i;
if(vecin==n)
k=true;
}
}
}
return k;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y>>z;
a[x].push_back(y);
a[y].push_back(x);
c[x][y]=z;
///c[y][x]=0;
}
while(bfs()==true)
{
int d=MX;
for(x=n;t[x]!=0;x=t[x])
d=min(d,c[t[x]][x]-f[t[x]][x]);
s+=d;
for(x=n;t[x]!=0;x=t[x])
{
f[t[x]][x]+=d;
f[x][t[x]]-=d;
}
}
fout<<s;
return 0;
}