Bipartició oculta P30564


Statement
 

pdf   zip

thehtml

Recordeu que un graf és bipartit si podem partir el conjunt de vèrtexs en dos subconjunts A i B (algun pot ser buit) de manera que cada aresta connecti un vèrtex d’A amb un de B.

Donat un graf no dirigit amb n vèrtexs i m arestes, digueu si es pot fer bipartit eliminant com a màxim m/2 arestes. En cas afirmatiu, doneu un possible conjunt d’arestes a eliminar.

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb n i m, seguits d’m parells x y indicant una aresta entre x i y, amb xy. Els vèrtexs del graf es numeren entre 0 i n − 1. No hi ha arestes repetides. Assumiu que n i m estan entre 1 i 105.

Sortida

Escriviu una línia per cada cas. Si no és possible eliminar com a molt k arestes per obtenir un graf bipartit, amb km/2, escriviu només el nombre -1. Altrament, escriviu primer k, seguida de les k arestes a eliminar (totes diferents). Podeu escriure en qualsevol ordre tant les arestes entre si com els dos vèrtexs de cada aresta. Cada aresta ha d’anar precedida de dos espais. Seguiu estrictament el format dels exemples. Si hi ha més d’una solució possible, escriviu la que vulgueu.

Public test cases
  • Input

    4 6  0 1  0 2  0 3  1 2  3 1  2 3
    3 2  0 1  1 2
    3 2  0 1  1 2
    3 2  0 1  1 2
    

    Output

    2  0 2  1 3
    0
    1  0 1
    1  1 0
    
  • Information
    Author
    Xavier Povill
    Language
    Catalan
    Official solutions
    C++ Python
    User solutions
    C++