图的遍历 之 深搜dfs

DFS 遍历
深度优先搜索是一个递归过程,有回退过程。
对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1;再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2;然后再从v2 出发,进行类似的访问;;如此进行下去,直至到达所有邻接顶点都被访问过的某个顶点x 为止;接着,回退一步,回退到前一次刚访问过的顶点,看是否还有其它没有被访问过的邻接顶点,如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再回退一步进行类似的访问。
重复上述过程,直到该连通图中所有顶点都被访问过为止。
深搜过程:
图的遍历 之 深搜dfs
深搜算法实现:
图的遍历 之 深搜dfs
代码如下:
 #include<iostream>
#include<cstdio>
using namespace std;
char maps[][];
bool vis[];
int q,m;
void dfs(int a){
vis[a]=;
if(a<q)
printf("%c --> ",a+);
else printf("%c",a+);
for(int i=;i<=q;i++)
{
if(maps[a][i]==&&vis[i]==)
dfs(i);
}
}
int main()
{ char a,b;
cin>>q>>m;
for(int i=;i<=m;i++)
{
cin>>a>>b;
maps[a-][b-]=;
maps[b-][a-]=;
}
dfs();
}
上一篇:container_of


下一篇:用JS添加和删除class类名