Pagini recente » Cod sursa (job #1157662) | Cod sursa (job #2603082) | Cod sursa (job #2987267) | Cod sursa (job #655888) | Cod sursa (job #2301054)
#include <bits/stdc++.h>
#define N 1005
using namespace std;
ifstream in("maxflow.in");
ofstream out("maxflow.out");
int n,m,pater[N],graph[N][N],Rgraph[N][N],ap[N];
deque <int> q;
bool BFS(int node)
{
memset(pater,-1,sizeof(pater));
memset(ap,0,sizeof(ap));
pater[node]=0;
q.push_back(node);
while(!q.empty())
{
int p=q.front();
q.pop_front();
for(int i=1; i<=n; i++)
{
if(graph[p][i]>0 && !ap[i])
{
pater[i]=p;
ap[i]=1;
q.push_back(i);
}
}
}
if(ap[n])
return true;
return false;
}
int main()
{
in >> n >> m;
for(int i=1; i<=m; i++)
{
int x,y;
in >> x >> y;
in >> graph[x][y];
}
int max_flow=0;
while(BFS(1))
{
int current_flow=99999999;
for(int i=n; i!=1; i=pater[i])
{
int j=pater[i];
current_flow=min(current_flow,graph[j][i]);
}
for(int i=n; i!=1; i=pater[i])
{
int j=pater[i];
graph[j][i]-=current_flow;
graph[i][j]+=current_flow;
}
max_flow+=current_flow;
}
out << max_flow;
return 0;
}