Int generate_path( const PosMatrix& prev, const Pos& start, Path& path ) { Pos cur = start; while ( cur != POS_NONE ) { path.push_back(cur); cur = prev[cur.get_row()][cur.get_col()]; } std::reverse(std::begin(path), std::end(path)); return path.size(); }