Member 13468650 Ответов: 0

Найти все пути через все ребра между двумя узлами


Я пытаюсь выяснить, как найти все пути между узлами через все ребра, а не вершины. Я думал о посещенном[][], чтобы проверить, был ли край посещен, но у меня возникли некоторые проблемы. Может быть, у меня есть простой способ, и я его не вижу. Есть идеи?

void allPathsDFS(int verticeFrom, int verticeTo, boolean[] visited, Deque<Integer> paths, List<List<Integer>> rezults){
    visited[verticeFrom] = true;
    paths.add(verticeFrom);
    if (verticeFrom == verticeTo){
        rezults.add(new ArrayList<Integer>(paths));
    }
    else{
        if(adj.containsKey(verticeFrom)){
            for(Integer i : adj.get(verticeFrom)){
                if(!visited[i] ){                                                        
                    allPathsDFS(i, verticeTo, visited, paths, rezults);
                }
            }
        }
    }
    paths.removeLast();
    visited[verticeFrom] = false;
}


Что я уже пробовал:

Visited Boolean[][] с указанием того, какой край был посещен

0 Ответов