ó žÃÒYc@s´dZddlZddlmZddlmZdddd d gZed ƒd „ƒZed ƒe d „ƒZ d„Z ed ƒd„ƒZ ed ƒd„ƒZ d„ZdS(sConnected components.iÿÿÿÿN(tnot_implemented_fori(tarbitrary_elementtnumber_connected_componentstconnected_componentstconnected_component_subgraphst is_connectedtnode_connected_componenttdirectedccsTtƒ}xD|D]<}||krtt||ƒƒ}|V|j|ƒqqWdS(sxGenerate connected components. Parameters ---------- G : NetworkX graph An undirected graph Returns ------- comp : generator of sets A generator of sets of nodes, one for each component of G. Raises ------ NetworkXNotImplemented: If G is undirected. Examples -------- Generate a sorted list of connected components, largest first. >>> G = nx.path_graph(4) >>> nx.add_path(G, [10, 11, 12]) >>> [len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)] [4, 3] If you only want the largest connected component, it's more efficient to use max instead of sort. >>> largest_cc = max(nx.connected_components(G), key=len) See Also -------- strongly_connected_components weakly_connected_components Notes ----- For undirected graphs only. N(tsett _plain_bfstupdate(tGtseentvtc((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyRs +   ccsFx?t|ƒD]1}|r0|j|ƒjƒVq |j|ƒVq WdS(sÕGenerate connected components as subgraphs. Parameters ---------- G : NetworkX graph An undirected graph. copy: bool (default=True) If True make a copy of the graph attributes Returns ------- comp : generator A generator of graphs, one for each connected component of G. Raises ------ NetworkXNotImplemented: If G is undirected. Examples -------- >>> G = nx.path_graph(4) >>> G.add_edge(5,6) >>> graphs = list(nx.connected_component_subgraphs(G)) If you only want the largest connected component, it's more efficient to use max instead of sort: >>> Gc = max(nx.connected_component_subgraphs(G), key=len) See Also -------- connected_components strongly_connected_component_subgraphs weakly_connected_component_subgraphs Notes ----- For undirected graphs only. Graph, node, and edge attributes are copied to the subgraphs by default. N(Rtsubgraphtcopy(R RR((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyRMs-cCsttt|ƒƒƒS(sŠReturn the number of connected components. Parameters ---------- G : NetworkX graph An undirected graph. Returns ------- n : integer Number of connected components See Also -------- connected_components number_weakly_connected_components number_strongly_connected_components Notes ----- For undirected graphs only. (tlentlistR(R ((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyRscCsRt|ƒdkr'tjddƒ‚nttt|t|ƒƒƒƒt|ƒkS(siReturn True if the graph is connected, false otherwise. Parameters ---------- G : NetworkX Graph An undirected graph. Returns ------- connected : bool True if the graph is connected, false otherwise. Raises ------ NetworkXNotImplemented: If G is undirected. Examples -------- >>> G = nx.path_graph(4) >>> print(nx.is_connected(G)) True See Also -------- is_strongly_connected is_weakly_connected is_semiconnected is_biconnected connected_components Notes ----- For undirected graphs only. isConnectivity is undefined sfor the null graph.(RtnxtNetworkXPointlessConceptRR R(R ((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyRœs&  cCstt||ƒƒS(sÙReturn the nodes in the component of graph containing node n. Parameters ---------- G : NetworkX Graph An undirected graph. n : node label A node in G Returns ------- comp : set A set of nodes in the component of G containing node n. Raises ------ NetworkXNotImplemented: If G is directed. See Also -------- connected_components Notes ----- For undirected graphs only. (RR (R tn((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyRÈsccs~|j}tƒ}|h}x\|ry|}tƒ}x@|D]8}||kr:|V|j|ƒ|j||ƒq:q:WqWdS(sA fast BFS node generatorN(tadjRtaddR (R tsourcetG_adjR t nextlevelt thislevelR ((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyR ês        (t__doc__tnetworkxRtnetworkx.utils.decoratorsRtutilsRt__all__RtTrueRRRRR (((s~/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/components/connected.pyt s  3 3 ,"