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 m.comprometer_con(*(m.ofertas.front()));
31 m.ofertas.pop_front();
39 for (personas_type::iterator ih = hombres.begin();
40 ih != hombres.end(); ++ih)
43 if (h.estado == Persona::COMPROMETIDO)
47 for (personas_type::iterator im = h.prefs.begin();
48 im != h.prefs.end(); ++im)
51 if (std::find(h.rechazos.begin(), h.rechazos.end(), pm)
52 != h.rechazos.end()) // Si está
60 for (personas_type::iterator im = mujeres.begin();
61 im != mujeres.end(); ++im)
64 if (m.ofertas.empty())
68 Persona* ph = m.ofertas.front();
69 m.ofertas.pop_front();
70 if (m.estado == Persona::COMPROMETIDO)
72 if (m.cmp(*(m.pareja), *ph) < 0)
74 // la oferta es mejor, rompemos el compromiso
75 m.comprometer_con(*ph);
79 // estamos mejor con nuestra pareja actual, asi
80 // que no hacemos mas que rechazar a todos
81 // (incluyendo el mejor candidato)
82 for (Persona::ofertas_type::iterator i
84 i != m.ofertas.end(); ++i)
85 (*i)->rechazos.push_back(&m);
86 ph->rechazos.push_back(&m);
92 m.comprometer_con(*ph);
99 todos_h_comprometidos() const
101 // FIXME: podemos ver de poner esto adentro de nesima_ronda()
102 for (personas_type::const_iterator ih = hombres.begin();
103 ih != hombres.end(); ++ih)
104 if ((*ih)->estado != Persona::COMPROMETIDO)
115 while (!todos_h_comprometidos())