#include <iostream>
using namespace std;
const int INF = 9999;
int book[101],sum,n,e[101][101];
void dfs(int cur);
int main()
{
int i,j,m,a,b;
cin>>n>>m;
//初始化二维矩阵
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
if(i == j)
{
e[i][j] = 0;
}
else
{
e[i][j] = INF;
}
}
}
//读入顶点之间的边
for(i = 1;i <= m;i++)
{
cin>>a>>b;
e[a][b] = 1;
e[b][a] = 1;
}
//从1号城市出发
book[1] = 1; //标记1号顶点已访问
dfs(1); //从1号顶点开始遍历
return 0;
}
//
void dfs(int cur)
{
int i;
cout<<cur<<" ";
sum++;
if(sum == n) //所有的顶点都被访问过则直接返回
{
return;
}
for(i = 1;i <= n;i++)//找到与当前节点相连的结点
{
if((e[cur][i] == 1)&&(book[i] == 0))//找到一个结点并进行深度优先遍历
{
book[i] = 1;
dfs(i);
}
}
return;
}
图深度优先遍历邻接矩阵表示
最新推荐文章于 2023-04-25 19:26:18 发布