s
for(size_t i = 1; i < g.num_edges(); ++i) {
попробуй так
если не будет ошибки - дело значит в этом
там уж отлаживай
ну и там -1 где надо сделай
Size: a a a
s
for(size_t i = 1; i < g.num_edges(); ++i) {
s
class brute_force {
public:
void impl_fill(graph g) {
if(all_subgraphs.find(g) == all_subgraphs.end()) {
if(g.is_reachable(_s, _d)) {
all_subgraphs.insert(g);
for(size_t i = 0; i < g.num_edges(); ++i) {
g.erase_edge(i);
impl_fill(g);
}
}
}
}
void fill_set() {
impl_fill(_g); <--вот тут вылетает
}
private:
graph _g;
std::unordered_set<graph, graph_hash> all_subgraphs;
};
Код класса `graph`:
class graph {
public:
using byte = unsigned char;
using edge_type = std::vector<std::pair<byte, byte>>;
graph() = default;
graph(graph const& other) = default;
graph(edge_type edges, byte n) : edges(std::move(edges)), n(n) {};
private:
edge_type edges;
byte n = 0;
};
0 0
\ /
0
s
s
d
0 0
\ /
0
s
s
0 0
\ /
0
s
d
0 0
\ /
0
s
for(size_t i = 0; i < g.num_edges(); ++i) {
g.erase_edge(i);
impl_fill(g);
}
ну типа вот здесь мы удаляем ребра в цикле насколько я понял - во-первых - g.num_edges()
изменяется ли после g.erase_edge(i)
?s
d
for(size_t i = 0; i < g.num_edges(); ++i) {
g.erase_edge(i);
impl_fill(g);
}
ну типа вот здесь мы удаляем ребра в цикле насколько я понял - во-первых - g.num_edges()
изменяется ли после g.erase_edge(i)
?s
s
s
i < g.num_edges()
и правая на каждой итерацииd
i < g.num_edges()
и правая на каждой итерацииs
AB
A
sf::Clock clock;
const sf::Time kSleepTime = sf::milliseconds(70);
const float kBotReactionDelay = 5.0;
//...
while(m_Window.isOpen()) {
//...
if (clock.GetElapsedTime() < kBotReactionDelay) {
sf::sleep(kSleepTime);
}
}