Попытка перечислить все входные пути (путь, начинающийся с вершины с нулевой степенью) к целевой вершине.
Все входящие / исходящие ребра сохраняются в векторе, называемом вершинами.Я пытаюсь использовать рекурсию, чтобы начать с цели, работать задом наперед и на каждом входящем узле, рекурсивно вызывать и извлекать пути до вершины, у которой размер входящего векторного ребра равен нулю (т. Е. Не равен нулю).
Все различные пути хранятся в векторе с использованием конкатенации строк.
Функция печатает правильное количество различных путей и их начальные вершины, но некоторые пути пропускают некоторые извершины после этого.Я не уверен, что является причиной этой проблемы.
bool enum_paths_helper(int target, vector<string> &paths, int &y) {
if (has_cycle() || target < 0 || target >= num_nodes())
return false;
int i;
if (vertices[target].incoming.size() == 0) {
y = paths.size();
paths.push_back(vertices[target].name);
return true;
}
for (i = 0; i < vertices[target].incoming.size(); i++) {
enum_paths_helper(vertices[target].incoming[i].vertex_id, paths, y);
paths[y] = paths[y] +" " + vertices[target].name;
}
return true;
}