ó
    …~i˜
  ã                   óÒ   • S r SSKrSSKJr  / SQr\" S5      \R                  S 5       5       r\" S5      \R                  S 5       5       r\" S5      \R                  S 5       5       r	g)	zAttracting components.é    N)Únot_implemented_for)Únumber_attracting_componentsÚattracting_componentsÚis_attracting_componentÚ
undirectedc              #   óÂ   #   • [        [        R                  " U 5      5      n[        R                  " X5      nU H   nUR	                  U5      S:X  d  M  X   v •  M"     g7f)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       Úf/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/algorithms/components/attracting.pyr   r      sM   é € ôJ Œr×/Ò/°Ó2Ó
3€CÜ	�Š˜Ó	 €BÛˆØ�=‰=˜Ó˜qÕ Ø‘&ŒLò ùs   ‚AAÁAc                 ó8   • [        S [        U 5       5       5      $ )aX  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   ó&   #   • U  H  nS v •  M	     g7f)é   N© )Ú.0Úacs     r   Ú	<genexpr>Ú/number_attracting_components.<locals>.<genexpr>S   s   é € Ð4Ò3�R�qÒ3ùs   ‚)Úsumr   )r   s    r   r   r   9   s   € ô4 Ñ4Ô0°Ô3Ó4Ó4Ð4ó    c                 ó~   • [        [        U 5      5      n[        U5      S:X  a  [        US   5      [        U 5      :H  $ g)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   