图的深度优先遍历c++实现

  • 深度优先搜索

邻接矩阵的创建

	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] = 0x3f; //读入顶点之间的边
for (i = 1; i <= m; i++)
{
cin >> a >> b;
e[a][b] = 1;
e[b][a] = 1; //无向图需要将其对应的点的左边也赋值为1
}

深度优先搜索算法实现

void dfs(int cur)
{
int i;
cout << cur << " ";
sum++;//每访问一个节点sum就++
if (sum == n)return;//所有的顶点已经访问过直接退出
for (int i = 1; i <= n; i++)
{
//判断当前顶点cur到顶点i是否有边,并判断顶点i是否已经访问过
if (e[cur][i] == 1 && book[i] == 0)
{
book[i] = 1;
dfs(i);
}
}
return;
}

整体代码

#include <iostream>
#include <cstdio>
using namespace std;
int book[101], sum, n, e[101][101]; void dfs(int cur)
{
int i;
cout << cur << " ";
sum++;//没访问一个节点sum就++
if (sum == n)return;//所有的顶点已经访问过直接退出
for (int i = 1; i <= n; i++)
{
//判断当前顶点cur到顶点i是否有边,并判断顶点i是否已经访问过
if (e[cur][i] == 1 && book[i] == 0)
{
book[i] = 1;
dfs(i);
}
}
return;
}
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] = 0x3f; //读入顶点之间的边
for (i = 1; i <= m; i++)
{
cin >> a >> b;
e[a][b] = 1;
e[b][a] = 1; //无向图需要将其对应的点的左边也赋值为1
} //从顶点1出发
book[1] = 1;//标记一号顶点已经被访问
dfs(1);//从1号顶点开始遍历
system("pause");
return 0;
}

最新文章

  1. Windows下Thumbnail的开发总结
  2. dom4j如何解析XML文件
  3. Linux平台下利用系统接口函数按照行读写文件
  4. Hadoop的partitioner、全排序
  5. CSS那些事儿-阅读随笔2(选择符的组合与优先级/权重)
  6. jquery ui dialog去除第一个文本框焦点问题
  7. 笔记一:Python的PyDev插件在eclipse上面安装(新的插件地址 location)
  8. Android实时取景:用SurfaceView实现
  9. C#获取中国天气网免费天气预报信息
  10. python学习之旅(五)
  11. docker centos 老是退出
  12. 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
  13. winhex十六进制常用快捷键
  14. 奇怪吸引子---Qi
  15. Android-Kotlin在Fragment获取View
  16. JS中如何处理多个ajax并发请求?
  17. [翻译] Shimmer
  18. hdu6021[BestCoder #93] MG loves string
  19. kendalltau肯德尔和谐系数
  20. php将长字符串拆分为指定最大宽度的字符串数组

热门文章

  1. Linux配置DNS
  2. 把ubuntu自带的高gcc版本降到低版本(如gcc 3.4)的方法
  3. CentOS安装Hive
  4. 4 实战CPU上下文
  5. 发现一个企业微信第三方应用开发的疑似BUG
  6. 洛谷P5017:摆渡车——题解
  7. [翻译] InfluxDB 存储机制解析
  8. [Atcoder AGC029C]Lexicographic constraints
  9. 使用el-dialog时,报错“Unknown custom element:&lt;el-dialog&gt; did you register the component correctly?...make sure to provide the &#39;name&#39; option”
  10. 入门-windows下安装ETH挖矿