docs: def find_feasible_flow(self):
          '''
          API:
              find_feasible_flow(self)
          Description:
              Solves feasible flow problem, stores solution in 'flow' attribute
              or arcs. This method is used to get an initial feasible flow for
              simplex and cycle canceling algorithms. Uses max_flow() method.
              Other max flow methods can also be used. Returns True if a feasible
              flow is found, returns False, if the problem is infeasible. When
              the problem is infeasible 'flow' attributes of arcs should be
              considered as junk.
          Pre:
              (1) 'capacity' attribute of arcs
              (2) 'demand' attribute of nodes
          Post:
              Keeps solution in 'flow' attribute of arcs.
          Return:
              Returns True if a feasible flow is found, returns False, if the
              problem is infeasible
          '''
          # establish a feasible flow in the network, to do this add nodes s and
          # t and solve a max flow problem.
          nl = self.get_node_list()
          for i in nl:
              b_i = self.get_node(i).get_attr('demand')
              if b_i > 0:
                  # i is a supply node, add (s,i) arc
                  self.add_edge('s', i, capacity=b_i)
              elif b_i < 0:
                  # i is a demand node, add (i,t) arc
                  self.add_edge(i, 't', capacity=-1*b_i)
          # solve max flow on this modified graph
          self.max_flow('s', 't', 'off')
          # check if all demand is satisfied, i.e. the min cost problem is
          # feasible or not
          for i in self.neighbors['s']:
              flow = self.get_edge_attr('s', i, 'flow')
              capacity = self.get_edge_attr('s', i, 'capacity')
              if flow != capacity:
                  self.del_node('s')
                  self.del_node('t')
                  return False
          # remove node 's' and node 't'
          self.del_node('s')
          self.del_node('t')
          return True