輸出圖中頂點i到頂點j之間的所有簡單路徑
阿新 • • 發佈:2017-09-01
arc [] 遍歷 nod list edge void 所有 num
簡單路徑(不包括環)
DFS遍歷以及回溯得到結果
void dfs(ALGraph graph, int v, int end, bool visit[], int path[], int cnt) { visit[v] = true; path[cnt++] = v; if(v == end) { for(int i = 0; i < cnt; i++) { cout<<path[i]<<" "; } cout<<endl; return; } for(ArcNode* edge = graph.adjList[v].first; edge != NULL; edge = edge->next) { if(!visit[edge->adjvex]) { dfs(graph, edge->adjvex, end, visit, path, cnt); } //回溯 visit[edge->adjvex] = false; } } //輸出頂點i到頂點j之間的所有簡單路徑(不包含回路) void findAllPath(ALGraph graph, int start, int end) { if(start == end) cout<<start<<endl; else { bool visit[MAX_NUM]; memset(visit, 0, sizeof(visit)); int path[MAX_NUM]; dfs(graph, start, end, visit, path, 0); } }
輸出圖中頂點i到頂點j之間的所有簡單路徑