Ë
    D^(hg  ã                   óØ   — 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	d	„ Z
y)
zWeakly connected components.é    N)Únot_implemented_for)Ú"number_weakly_connected_componentsÚweakly_connected_componentsÚis_weakly_connectedÚ
undirectedc              #   ó¤   K  — t        «       }t        | «      }| D ]2  }||vsŒt        t        | ||«      «      }|j                  |«       |–— Œ4 y­w)aÚ  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        úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/algorithms/components/weakly_connected.pyr   r      sR   è ø€ ô` ‹5€DÜˆA‹€AØò ˆØ�DŠ=Ü”J˜q ! QÓ'Ó(ˆAØ�K‰K˜ŒNØ‹Gñ	ùs
   ‚A¢.Ac                 ó8   — t        d„ t        | «      D «       «      S )al  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   ó    K  — | ]  }d –— Œ y­w)é   N© )Ú.0Úwccs     r   ú	<genexpr>z5number_weakly_connected_components.<locals>.<genexpr>k   s   è ø€ Ò;�SŒqÑ;ùs   ‚)Úsumr   ©r   s    r   r   r   F   s   € ôJ Ñ;Ô7¸Ó:Ô;Ó;Ð;ó    c                 óš   — t        | «      dk(  rt        j                  d«      ‚t        t        t	        | «      «      «      t        | «      k(  S )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   s    r   r   r   n   sG   € ôd ˆ1ƒv�‚{Ü×)Ñ)Ø?ó
ð 	
ô ŒtÔ/°Ó2Ó3Ó4¼¸A»Ñ>Ð>r   c              #   óf  K  — | j                   }| j                  }|h}|g}|–— |r‰|}g }|D ]|  }||   D ]-  }	|	|vsŒ|j                  |	«       |j                  |	«       |	–— Œ/ ||   D ]-  }	|	|vsŒ|j                  |	«       |j                  |	«       |	–— Œ/ t	        |«      |k(  sŒ| y |rŒˆyy­w)zwA fast BFS node generator

    The direction of the edge between nodes is ignored.

    For directed graphs only.

    N)Ú_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à
‚LÙ
Øˆ	Øˆ	Øò 	ˆAØ˜1‘Xò �Ø˜D’=Ø—H‘H˜Q”KØ×$Ñ$ QÔ'Ø“Gð	ð
 ˜1‘Xò �Ø˜D’=Ø—H‘H˜Q”KØ×$Ñ$ QÔ'Ø“Gð	ô
 �4‹y˜A‹~Ùð	ô ùs   ‚:B1½4B1Á26B1Â)B1Â/B1)Ú__doc__Únetworkxr   Únetworkx.utils.decoratorsr   Ú__all__Ú_dispatchabler   r   r   r   r   r   r   ú<module>r1      s’   ðÙ "ã Ý 9ò€ñ �\Ó"Ø×Ññ4ó ó #ð4ñn �\Ó"Ø×Ññ#<ó ó #ð#<ñL �\Ó"Ø×Ññ5?ó ó #ð5?ópr   