ó
    …~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	S	 r
g)
zWeakly connected components.é    N)Únot_implemented_for)Ú"number_weakly_connected_componentsÚweakly_connected_componentsÚis_weakly_connectedÚ
undirectedc              #   ó°   #   • [        5       n[        U 5      nU  H7  nX1;  d  M
  [        X[        U5      -
  U5      nUR                  U5        Uv •  M9     g7f)aR  Generate weakly connected components of G.

Parameters
----------
G : NetworkX graph
    A directed graph

Returns
-------
comp : generator of sets
    A generator of sets of nodes, one for each weakly connected
    component of G.

Raises
------
NetworkXNotImplemented
    If G is undirected.

Examples
--------
Generate a sorted list of weakly connected components, largest first.

>>> G = nx.path_graph(4, create_using=nx.DiGraph())
>>> nx.add_path(G, [10, 11, 12])
>>> [
...     len(c)
...     for c in sorted(nx.weakly_connected_components(G), key=len, reverse=True)
... ]
[4, 3]

If you only want the largest component, it's more efficient to
use max instead of sort:

>>> largest_cc = max(nx.weakly_connected_components(G), key=len)

See Also
--------
connected_components
strongly_connected_components

Notes
-----
For directed graphs only.

N)ÚsetÚlenÚ
_plain_bfsÚupdate)ÚGÚseenÚnÚvÚcs        Úl/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/algorithms/components/weakly_connected.pyr   r      sK   é € ô` ‹5€DÜˆA‹€AÛˆØ�=Ü˜1¤# d£)™m¨QÓ/ˆAØ�K‰K˜ŒNØŒGò	 ùs
   ‚A¤2Ac                 ó8   • [        S [        U 5       5       5      $ )a  Returns the number of weakly connected components in G.

Parameters
----------
G : NetworkX graph
    A directed graph.

Returns
-------
n : integer
    Number of weakly connected components

Raises
------
NetworkXNotImplemented
    If G is undirected.

Examples
--------
>>> G = nx.DiGraph([(0, 1), (2, 1), (3, 4)])
>>> nx.number_weakly_connected_components(G)
2

See Also
--------
weakly_connected_components
number_connected_components
number_strongly_connected_components

Notes
-----
For directed graphs only.

c              3   ó&   #   • U  H  nS v •  M	     g7f)é   N© )Ú.0Ú_s     r   Ú	<genexpr>Ú5number_weakly_connected_components.<locals>.<genexpr>k   s   é € Ð9Ò8�Q�qÒ8ùs   ‚)Úsumr   )r   s    r   r   r   F   s   € ôJ Ñ9Ô5°aÔ8Ó9Ó9Ð9ó    c                 ó�   • [        U 5      nUS:X  a  [        R                  " S5      e[        [        [	        U 5      5      5      U:H  $ )a•  Test directed graph for weak connectivity.

A directed graph is weakly connected if and only if the graph
is connected when the direction of the edge between nodes is ignored.

Note that if a graph is strongly connected (i.e. the graph is connected
even when we account for directionality), it is by definition weakly
connected as well.

Parameters
----------
G : NetworkX Graph
    A directed graph.

Returns
-------
connected : bool
    True if the graph is weakly connected, False otherwise.

Raises
------
NetworkXNotImplemented
    If G is undirected.

Examples
--------
>>> G = nx.DiGraph([(0, 1), (2, 1)])
>>> G.add_node(3)
>>> nx.is_weakly_connected(G)  # node 3 is not connected to the graph
False
>>> G.add_edge(2, 3)
>>> nx.is_weakly_connected(G)
True

See Also
--------
is_strongly_connected
is_semiconnected
is_connected
is_biconnected
weakly_connected_components

Notes
-----
For directed graphs only.

r   z-Connectivity is undefined for the null graph.)r
   ÚnxÚNetworkXPointlessConceptÚnextr   )r   r   s     r   r   r   n   sH   € ôd 	ˆA‹€AØˆAƒvÜ×)Ò)Ø?ó
ð 	
ô ŒtÔ/°Ó2Ó3Ó4¸Ñ9Ð9r   c                 ór  • U R                   nU R                  nU1nU/nU(       a‘  Un/ nU H~  nX8    H,  n	X•;  d  M
  UR                  U	5        UR                  U	5        M.     XH    H,  n	X•;  d  M
  UR                  U	5        UR                  U	5        M.     [	        U5      U:X  d  M|  Us  $    U(       a  M‘  U$ )zkA fast BFS node generator

The direction of the edge between nodes is ignored.

For directed graphs only.

)Ú_succÚ_predÚaddÚappendr
   )
r   r   ÚsourceÚGsuccÚGpredr   Ú	nextlevelÚ	thislevelr   Úws
             r   r   r   ©   s±   € ð �G‰G€EØ�G‰G€EØˆ8€DØ�€Iæ
Øˆ	Øˆ	ÛˆAØ”X�Ø•=Ø—H‘H˜Q”KØ×$Ñ$ QÖ'ñ ð ”X�Ø•=Ø—H‘H˜Q”KØ×$Ñ$ QÖ'ñ ô �4‹y˜A�~Ø’ñ ÷ ˆ)ð €Kr   )Ú__doc__Únetworkxr   Únetworkx.utils.decoratorsr   Ú__all__Ú_dispatchabler   r   r   r   r   r   r   Ú<module>r1      s’   ðÙ "ã Ý 9ò€ñ �\Ó"Ø×Ññ4ó ó #ð4ñn �\Ó"Ø×Ññ#:ó ó #ð#:ñL �\Ó"Ø×Ññ6:ó ó #ð6:órr   