docs: def smallest_flagged(heap, row):
      """Search the heap for the smallest element that is
      still flagged.
  
      Parameters
      ----------
      heap: array of shape (3, n_samples, n_neighbors)
          The heaps to search
  
      row: int
          Which of the heaps to search
  
      Returns
      -------
      index: int
          The index of the smallest flagged element
          of the ``row``th heap, or -1 if no flagged
          elements remain in the heap.
      """
      ind = heap[0, row]
      dist = heap[1, row]
      flag = heap[2, row]
  
      min_dist = np.inf
      result_index = -1
  
      for i in range(ind.shape[0]):
          if flag[i] == 1 and dist[i] < min_dist:
              min_dist = dist[i]
              result_index = i
  
      if result_index >= 0:
          flag[result_index] = 0.0
          return int(ind[result_index])
      else:
          return -1