Ë
    D^(h
  ã                   ó(   — d Z ddlmZ  G d„ d«      Zy)z
Union-find data structure.
é    )Úgroupsc                   ó0   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zy)	Ú	UnionFindaŒ  Union-find data structure.

    Each unionFind instance X maintains a family of disjoint sets of
    hashable objects, supporting the following two methods:

    - X[item] returns a name for the set containing the given item.
      Each set is named by an arbitrarily-chosen one of its members; as
      long as the set remains unchanged it will keep the same name. If
      the item is not yet part of a set in X, a new singleton set is
      created for it.

    - X.union(item1, item2, ...) merges the sets containing each item
      into a single larger set.  If any item is not yet part of a set
      in X, it is added to X as one of the members of the merged set.

      Union-find data structure. Based on Josiah Carlson's code,
      https://code.activestate.com/recipes/215912/
      with significant additional changes by D. Eppstein.
      http://www.ics.uci.edu/~eppstein/PADS/UnionFind.py

    Nc                 ór   — |€d}i | _         i | _        |D ]   }d| j                  |<   || j                   |<   Œ" y)z¾Create a new empty union-find structure.

        If *elements* is an iterable, this structure will be initialized
        with the discrete partition on the given set of elements.

        N© é   )ÚparentsÚweights)ÚselfÚelementsÚxs      úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/utils/union_find.pyÚ__init__zUnionFind.__init__   sF   € ð ÐØˆHØˆŒØˆŒØò 	 ˆAØˆD�L‰L˜‰OØˆD�L‰L˜ŠOñ	 ó    c                 ó
  — || j                   vr || j                   |<   d| j                  |<   |S g }| j                   |   }||k7  r(|j                  |«       |}| j                   |   }||k7  rŒ(|D ]  }|| j                   |<   Œ |S )z:Find and return the name of the set containing the object.r   )r	   r
   Úappend)r   ÚobjectÚpathÚrootÚancestors        r   Ú__getitem__zUnionFind.__getitem__.   s™   € ð ˜Ÿ™Ñ%Ø#)ˆD�L‰L˜Ñ Ø#$ˆD�L‰L˜Ñ ØˆMð ˆØ�|‰|˜FÑ#ˆØ�fŠnØ�K‰K˜ÔØˆFØ—<‘< Ñ'ˆDð �f‹nð ò 	*ˆHØ%)ˆD�L‰L˜Ò"ð	*àˆr   c                 ó,   — t        | j                  «      S )zBIterate through all items ever found or unioned by this structure.)Úiterr	   )r   s    r   Ú__iter__zUnionFind.__iter__D   s   € ä�D—L‘LÓ!Ð!r   c              #   ó’   K  — | j                   D ]  }| |   }Œ	 t        | j                   «      j                  «       E d{  –—†  y7 Œ­w)a]  Iterates over the sets stored in this structure.

        For example::

            >>> partition = UnionFind("xyz")
            >>> sorted(map(sorted, partition.to_sets()))
            [['x'], ['y'], ['z']]
            >>> partition.union("x", "y")
            >>> sorted(map(sorted, partition.to_sets()))
            [['x', 'y'], ['z']]

        N)r	   r   Úvalues)r   r   Ú_s      r   Úto_setszUnionFind.to_setsH   sA   è ø€ ð —‘ò 	ˆAØ�Q‘‰Að	ô ˜$Ÿ,™,Ó'×.Ñ.Ó0×0Ò0ús   ‚=A¿AÁ Ac           	      ó  ‡ — t        t        |D �ch c]  }‰ |   ’Œ	 c}ˆ fd„d¬«      «      }	 t        |«      }|D ]5  }‰ j                  |xx   ‰ j                  |   z  cc<   |‰ j
                  |<   Œ7 yc c}w # t        $ r Y yw xY w)z8Find the sets containing the objects and merge them all.c                 ó"   •— ‰j                   |    S ©N)r
   )Úrr   s    €r   ú<lambda>z!UnionFind.union.<locals>.<lambda>`   s   ø€ ¸$¿,¹,Àq¹/€ r   T)ÚkeyÚreverseN)r   ÚsortedÚnextÚStopIterationr
   r	   )r   Úobjectsr   Úrootsr   r"   s   `     r   ÚunionzUnionFind.union[   s�   ø€ ô ÜØ")Ö*˜Q��a“Ò*Ó0IÐSWôó
ˆð
	Ü˜“;ˆDð ò 	#ˆAØ�L‰L˜Ó $§,¡,¨q¡/Ñ1ÓØ"ˆD�L‰L˜ŠOñ	#ùò +øô
 ò 	Ùð	ús   �A4®A9 Á9	BÂBr!   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r+   r   r   r   r   r      s    „ ñó, òò,"ò1ó&#r   r   N)r/   Únetworkx.utilsr   r   r   r   r   ú<module>r1      s   ðñõ "÷b#ò b#r   