Exemplo n.º 1
0
function find_augment_path(&$matching, $boy, $girls, $favorites)
{
    foreach ($girls as $girl) {
        if ($favorites[$boy][$girl] && !in_array($girl, $matching['search'])) {
            $matching['search'][] = $girl;
            if (!isset($matching['match'][$girl]) || find_augment_path($matching, $matching['match'][$girl], $girls, $favorites)) {
                $matching['match'][$girl] = $boy;
                return true;
            }
        }
    }
    return false;
}
Exemplo n.º 2
0
function find_augment_path(&$matching, $x)
{
    foreach ($matching['B'] as $y => $value) {
        if (in_array($y, $matching['edge'][$x]) && !in_array($y, $matching['search'])) {
            $matching['search'][] = $y;
            $matching['T'][] = $y;
            if (!isset($matching['match'][$y]) || find_augment_path($matching, $matching['match'][$y])) {
                $matching['match'][$y] = $x;
                return true;
            }
        }
    }
    return false;
}