Ë
    D^(h˜
  ã                   óÒ   — d Z ddlZddlmZ g d¢Z ed«      ej                  d„ «       «       Z ed«      ej                  d„ «       «       Z ed«      ej                  d„ «       «       Z	y)	zAttracting components.é    N)Únot_implemented_for)Únumber_attracting_componentsÚattracting_componentsÚis_attracting_componentÚ
undirectedc              #   óº   K  — t        t        j                  | «      «      }t        j                  | |«      }|D ]  }|j	                  |«      dk(  sŒ||   –— Œ  y­w)aá  Generates the attracting components in `G`.

    An attracting component in a directed graph `G` is a strongly connected
    component with the property that a random walker on the graph will never
    leave the component, once it enters the component.

    The nodes in attracting components can also be thought of as recurrent
    nodes.  If a random walker enters the attractor containing the node, then
    the node will be visited infinitely often.

    To obtain induced subgraphs on each component use:
    ``(G.subgraph(c).copy() for c in attracting_components(G))``

    Parameters
    ----------
    G : DiGraph, MultiDiGraph
        The graph to be analyzed.

    Returns
    -------
    attractors : generator of sets
        A generator of sets of nodes, one for each attracting component of G.

    Raises
    ------
    NetworkXNotImplemented
        If the input graph is undirected.

    See Also
    --------
    number_attracting_components
    is_attracting_component

    r   N)ÚlistÚnxÚstrongly_connected_componentsÚcondensationÚ
out_degree)ÚGÚsccÚcGÚns       úg/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/algorithms/components/attracting.pyr   r      sW   è ø€ ôJ Œr×/Ñ/°Ó2Ó
3€CÜ	�‰˜˜CÓ	 €BØò ˆØ�=‰=˜Ó˜qÓ Ø�a‘&‹Lñùs   ‚AAÁ
Ac                 ó8   — t        d„ t        | «      D «       «      S )aœ  Returns the number of attracting components in `G`.

    Parameters
    ----------
    G : DiGraph, MultiDiGraph
        The graph to be analyzed.

    Returns
    -------
    n : int
        The number of attracting components in G.

    Raises
    ------
    NetworkXNotImplemented
        If the input graph is undirected.

    See Also
    --------
    attracting_components
    is_attracting_component

    c              3   ó    K  — | ]  }d –— Œ y­w)é   N© )Ú.0Úacs     r   ú	<genexpr>z/number_attracting_components.<locals>.<genexpr>S   s   è ø€ Ò4�RŒqÑ4ùs   ‚)Úsumr   )r   s    r   r   r   9   s   € ô4 Ñ4Ô0°Ó3Ô4Ó4Ð4ó    c                 ó|   — t        t        | «      «      }t        |«      dk(  rt        |d   «      t        | «      k(  S y)aÍ  Returns True if `G` consists of a single attracting component.

    Parameters
    ----------
    G : DiGraph, MultiDiGraph
        The graph to be analyzed.

    Returns
    -------
    attracting : bool
        True if `G` has a single attracting component. Otherwise, False.

    Raises
    ------
    NetworkXNotImplemented
        If the input graph is undirected.

    See Also
    --------
    attracting_components
    number_attracting_components

    r   r   F)r	   r   Úlen)r   r   s     r   r   r   V   s9   € ô4 
Ô# AÓ&Ó	'€BÜ
ˆ2ƒw�!‚|Ü�2�a‘5‹zœS ›VÑ#Ð#Ør   )
Ú__doc__Únetworkxr
   Únetworkx.utils.decoratorsr   Ú__all__Ú_dispatchabler   r   r   r   r   r   ú<module>r#      s‹   ðÙ ã Ý 9ò€ñ �\Ó"Ø×Ññ'ó ó #ð'ñT �\Ó"Ø×Ññ5ó ó #ð5ñ6 �\Ó"Ø×Ññó ó #ñr   