docs: def simplex_remove_arc(self, t, p, q, min_capacity, cycle):
          '''
          API:
              simplex_remove_arc(self, p, q, min_capacity, cycle)
          Description:
              Removes arc (p,q), updates t, updates flows, where (k,l) is
              the entering arc.
          Input:
              t: tree solution to be updated.
              p: tail of the leaving arc.
              q: head of the leaving arc.
              min_capacity: capacity of the cycle.
              cycle: cycle obtained when entering arc considered.
          Post:
              (1) updates t.
              (2) updates 'flow' attributes.
          '''
          # augment min_capacity along cycle
          n = len(cycle)
          tel = list(t.edge_attr.keys())
          index = 0
          while index < (n-1):
              if (cycle[index], cycle[index+1]) in tel:
                  flow_e = self.edge_attr[(cycle[index], cycle[index+1])]['flow']
                  self.edge_attr[(cycle[index], cycle[index+1])]['flow'] =\
                      flow_e+min_capacity
              else:
                  flow_e = self.edge_attr[(cycle[index+1], cycle[index])]['flow']
                  self.edge_attr[(cycle[index+1], cycle[index])]['flow'] =\
                      flow_e-min_capacity
              index += 1
          # augment arc cycle[n-1], cycle[0]
          if (cycle[n-1], cycle[0]) in tel:
              flow_e = self.edge_attr[(cycle[n-1], cycle[0])]['flow']
              self.edge_attr[(cycle[n-1], cycle[0])]['flow'] =\
                  flow_e+min_capacity
          else:
              flow_e = self.edge_attr[(cycle[0], cycle[n-1])]['flow']
              self.edge_attr[(cycle[0], cycle[n-1])]['flow'] =\
                  flow_e-min_capacity
          # remove leaving arc
          t.del_edge((p, q))
          # set label of removed arc
          flow_pq = self.get_edge_attr(p, q, 'flow')
          capacity_pq = self.get_edge_attr(p, q, 'capacity')
          cost_pq = self.get_edge_attr(p, q, 'cost')
          self.set_edge_attr(p, q, 'label',
                             "%d/%d/%d" %(flow_pq,capacity_pq,cost_pq))
          for e in t.edge_attr:
              flow = self.edge_attr[e]['flow']
              capacity = self.edge_attr[e]['capacity']
              cost = self.edge_attr[e]['cost']
              t.edge_attr[e]['flow'] = flow
              t.edge_attr[e]['capacity'] = capacity
              t.edge_attr[e]['cost'] = cost
              t.edge_attr[e]['label'] = "%d/%d/%d" %(flow,capacity,cost)
              self.edge_attr[e]['label'] = "%d/%d/%d" %(flow,capacity,cost)