输出图中顶点i到顶点j之间的所有简单路径
Posted Waston
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出图中顶点i到顶点j之间的所有简单路径相关的知识,希望对你有一定的参考价值。
简单路径(不包括环)
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之间的所有简单路径的主要内容,如果未能解决你的问题,请参考以下文章