Aparallament màxim en un graf bipartit P17458


Statement
 

pdf   zip   main.py

Un graf bipartit és un graf G=(UV,E)G = (U \cup V,\, E) on els vèrtexs es divideixen en dos conjunts disjunts UU i VV tals que totes les arestes connecten un vèrtex de UU amb un de VV.

Un aparellament (matching) MEM \subseteq E és un subconjunt d’arestes tal que cap parell d’arestes de MM comparteixen cap vèrtex. La mida d’un aparellament és el nombre d’arestes que conté.

Un aparellament és un aparellament màxim si no existeix cap altre aparellament de mida més gran.

Per exemple, a la figura següent, el primer graf bipartit té un aparellament màxim de 3 arestes que es mostren en negreta i el segon té un aparellament màxim de 5 arestes.

image image

Implementeu un algorisme per trobar la mida d’un aparellament màxim en un graf bipartit.

Entrada

L’entrada consisteix en un graf bipartit descrit per una seqüència d’arestes, cadascuna d’elles descrita per un parell de vèrtexs (paraules) uu vv de forma que uUu \in U i vVv \in V.

Sortida

La sortida és la mida d’un aparellament màxim del graf bipartit donat.

Codi utilitzable

Descarregeu-vos el fitxer code.py. Aquest fitxer conté una classe amb la implementació de l’algorisme de Ford-Fulkerson per trobar el flux màxim en una xarxa amb capacitats i un programa principal que l’utilitza.

Public test cases
  • Input

    A D
    A E
    A F
    B D
    B E
    B F
    C F
    C G

    Output

    3
    
  • Input

    A G
    A H
    B F
    B G
    B H
    B I
    C H
    C I
    C J
    C K
    D F
    D G
    D I
    D J
    E K
    

    Output

    5
    
  • Input

    maria joan
    maria robert
    maria pau
    berta robert
    laura robert

    Output

    2
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python