Un graf bipartit és un graf on els vèrtexs es divideixen en dos conjunts disjunts i tals que totes les arestes connecten un vèrtex de amb un de .
Un aparellament (matching) és un subconjunt d’arestes tal que cap parell d’arestes de 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.
Implementeu un algorisme per trobar la mida d’un aparellament màxim en un graf bipartit.
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) de forma que i .
La sortida és la mida d’un aparellament màxim del graf bipartit donat.
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.
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