1 #include "galeshapley.h"
18 for (personas_type::iterator ih = hombres.begin();
19 ih != hombres.end(); ++ih)
21 (*ih)->declarar_a(*((*ih)->prefs[0]));
23 for (personas_type::iterator im = mujeres.begin();
24 im != mujeres.end(); ++im)
27 if (m.ofertas.empty())
30 Persona& prometido = *(m.ofertas.front());
31 m.ofertas.pop_front();
32 m.comprometer_con(prometido);
40 for (personas_type::iterator ih = hombres.begin();
41 ih != hombres.end(); ++ih)
44 if (h.estado == Persona::COMPROMETIDO)
48 for (personas_type::iterator im = h.prefs.begin();
49 im != h.prefs.end(); ++im)
52 if (std::find(h.rechazos.begin(), h.rechazos.end(), pm)
53 != h.rechazos.end()) // Si está
61 for (personas_type::iterator im = mujeres.begin();
62 im != mujeres.end(); ++im)
65 if (m.ofertas.empty())
69 Persona* ph = m.ofertas.front();
70 m.ofertas.pop_front();
71 if (m.estado == Persona::COMPROMETIDO)
73 if (m.cmp(*(m.pareja), *ph) < 0)
75 // la oferta es mejor, rompemos el compromiso
76 m.comprometer_con(*ph);
80 // estamos mejor con nuestra pareja actual, asi
81 // que no hacemos mas que rechazar a todos
82 // (incluyendo el mejor candidato)
83 for (Persona::ofertas_type::iterator i
85 i != m.ofertas.end(); ++i)
86 (*i)->rechazos.push_back(&m);
87 ph->rechazos.push_back(&m);
93 m.comprometer_con(*ph);
100 todos_h_comprometidos() const
102 // FIXME: podemos ver de poner esto adentro de nesima_ronda()
103 for (personas_type::const_iterator ih = hombres.begin();
104 ih != hombres.end(); ++ih)
105 if ((*ih)->estado != Persona::COMPROMETIDO)
116 while (!todos_h_comprometidos())