输出图中顶点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);
} }

  

上一篇:十一、Docker rm 命令


下一篇:centos SSH配置详解