思路:定义一个递归函数DFS,从源点开始进入DFS,每碰到当前未访问过的点就进入DFS,直到所有点都访问完
示例代码:
/*
无向图的深度优先遍历
*/
#include<iostream>
#define N 1001
using namespace std;
int visited[N];
int n,m;
int G[N][N];
void dfs(int x)
{
int i;
visited[x] = 1;
cout<<x<<" ";
for(i = 1; i <= n; i++)
{
// 对当前点x的所有未访问过的邻接点
if(!visited[i] && G[x][i] == 1)
{
dfs(i);
}
}
}
int main()
{
int i;
cin>>n>>m;
for(i = 1; i <= m; i++)
{
int a,b;
cin>>a>>b;
// 表示顶点a、b之间存在边
G[a][b] = G[b][a] = 1;
}
dfs(1);
return 0;
}