code: def _dinic_step(graph, capacity, lev, flow, u, target, limit):
      
      if limit <= 0:
          return 0
      if u == target:
          return limit
      val = 0
      for v in graph[u]:
          residual = capacity[u][v] - flow[u][v]
          if lev[v] == lev[u] + 1 and residual > 0:
              z = min(limit, residual)
              aug = _dinic_step(graph, capacity, lev, flow, v, target, z)
              flow[u][v] += aug
              flow[v][u] -= aug
              val += aug
              limit -= aug
      if val == 0:
          lev[u] = None         # remove unreachable node
      return val
docs: tenter de pousser le plus de flot de u à target, sans dépasser limit