ó
    …~is  ã                   ó–   • S r SSKrSSKJr  SSKJr  SSKJ	r	  S/r
\	" S5      \	" S5      \R                  " S	S
9SS j5       5       5       rg)z"Functions related to graph covers.é    N)Úhopcroft_karp_matching)Úmin_edge_cover)Únot_implemented_forr   ÚdirectedÚ
multigraphÚbipartite_min_edge_cover)Únamec                 ób   • U R                  5       S:X  a
  [        5       $ Uc  [        n[        XS9$ )a5  Returns a set of edges which constitutes
the minimum edge cover of the graph.

The smallest edge cover can be found in polynomial time by finding
a maximum matching and extending it greedily so that all nodes
are covered.

Parameters
----------
G : NetworkX graph
    An undirected bipartite graph.

matching_algorithm : function
    A function that returns a maximum cardinality matching in a
    given bipartite graph. The function must take one input, the
    graph ``G``, and return a dictionary mapping each node to its
    mate. If not specified,
    :func:`~networkx.algorithms.bipartite.matching.hopcroft_karp_matching`
    will be used. Other possibilities include
    :func:`~networkx.algorithms.bipartite.matching.eppstein_matching`,

Returns
-------
set
    A set of the edges in a minimum edge cover of the graph, given as
    pairs of nodes. It contains both the edges `(u, v)` and `(v, u)`
    for given nodes `u` and `v` among the edges of minimum edge cover.

Notes
-----
An edge cover of a graph is a set of edges such that every node of
the graph is incident to at least one edge of the set.
A minimum edge cover is an edge covering of smallest cardinality.

Due to its implementation, the worst-case running time of this algorithm
is bounded by the worst-case running time of the function
``matching_algorithm``.
r   )Úmatching_algorithm)ÚorderÚsetr   Ú_min_edge_cover)ÚGr   s     Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/algorithms/bipartite/covering.pyr   r      s0   € ðT 	‡w�wƒy�Aƒ~Ü‹uˆØÑ!Ü3ÐÜ˜1ÑDÐDó    )N)Ú__doc__ÚnetworkxÚnxÚ&networkx.algorithms.bipartite.matchingr   Únetworkx.algorithms.coveringr   r   Únetworkx.utilsr   Ú__all__Ú_dispatchable© r   r   Ú<module>r      sX   ðÙ (ã Ý IÝ JÝ .àÐ
€ñ �ZÓ Ù�\Ó"Ø×ÒÐ1Ñ2ó+Eó 3ó #ó !ñ+Er   