docstr: Remove an edge (s, t) where parent[t] == s from the spanning tree.
docstr_tok: ["Remove","an","edge","(","s",",","t",")","where","parent","[","t","]","==","s","from","the","spanning","tree","."]
code: def remove_edge(self, s, t):
      """
      Remove an edge (s, t) where parent[t] == s from the spanning tree.
      """
      size_t = self.subtree_size[t]
      prev_t = self.prev_node_dft[t]
      last_t = self.last_descendent_dft[t]
      next_last_t = self.next_node_dft[last_t]
      # Remove (s, t).
      self.parent[t] = None
      self.parent_edge[t] = None
      # Remove the subtree rooted at t from the depth-first thread.
      self.next_node_dft[prev_t] = next_last_t
      self.prev_node_dft[next_last_t] = prev_t
      self.next_node_dft[last_t] = t
      self.prev_node_dft[t] = last_t
      # Update the subtree sizes and last descendants of the (old) ancestors
      # of t.
      while s is not None:
          self.subtree_size[s] -= size_t
          if self.last_descendent_dft[s] == last_t:
              self.last_descendent_dft[s] = prev_t
          s = self.parent[s]
  
imports: from itertools import chain, islice, repeat
  from math import ceil, sqrt
  import networkx
  from networkx.utils import not_implemented_for
label_desc: Use image node_id 8 for calling the _DataEssentialsAndFunctions obj's underlying member method code with example usage: obj.remove_edge(s, t) without return types