#include<iostream>
using namespace std;
const int MAXV=1000;//最大顶点数
int n,m,G[MAXV][MAXV]={0};//邻接矩阵
bool vis[MAXV]={false};//标记数组
void DFS(int u,int depth)
{
vis[u]=true;//标记u已访问
cout<<u;
for(int v=0;v<n;v++)
{
if(vis[v]==false&&G[u][v]==1)//如果有对应边,且边终点未被访问
{
DFS(v,depth+1);//继续递归访问
}
}
}
void DFSTrave()
{
for(int u=0;u<n;u++)
{
if(vis[u]==false)//如果u未被访问
{
DFS(u,1);
}
}
}
int main()
{
int u,v;//边的起点和终点
cin>>n>>m;//输入顶点数、边数
for(int i=0;i<m;i++)
{
cin>>u>>v;
G[u][v]=1;
}
DFSTrave();
return 0;
}

本文详细介绍了深度优先搜索(DFS)算法的实现过程,通过C++代码演示了如何使用邻接矩阵表示图,并利用DFS遍历图的所有顶点。文章首先定义了最大顶点数,然后初始化邻接矩阵和标记数组,接着通过递归的方式实现了DFS算法,最后在主函数中读取顶点数、边数以及边的起点和终点,构建图并调用DFS遍历函数。
1945

被折叠的 条评论
为什么被折叠?



