/**
   * Returns the cost for a specified edge.  Should be overridden for
   * each specific implementation.
   * @param e Edge whose cost we want
   * @return int cost for edge e (non-negative) */
  protected abstract int cost(Edge e);

  /**
   * Returns the capacity for the specified edge.  Should be
   * overridden for each specific implementation.
   * @param e Edge whose capacity we want
   * @return int capacity for edge e (non-negative) */
  protected abstract int capacity(Edge e);