code: private void push(double[][] flow, double[] excess, int u, int v) {
          double send = Math.min(excess[u], graph[u][v] - flow[u][v]);
          flow[u][v] += send;
          flow[v][u] -= send;
          excess[u] -= send;
          excess[v] += send;
      }
docs: Push-relabel algorithm for maximum flow