图论 - 图的深度优先遍历c++实现
2024-09-02 15:31:06
图的深度优先遍历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;
}
最新文章
- Windows下Thumbnail的开发总结
- dom4j如何解析XML文件
- Linux平台下利用系统接口函数按照行读写文件
- Hadoop的partitioner、全排序
- CSS那些事儿-阅读随笔2(选择符的组合与优先级/权重)
- jquery ui dialog去除第一个文本框焦点问题
- 笔记一:Python的PyDev插件在eclipse上面安装(新的插件地址 location)
- Android实时取景:用SurfaceView实现
- C#获取中国天气网免费天气预报信息
- python学习之旅(五)
- docker centos 老是退出
- 杨其菊201771010134《面向对象程序设计Java》第二周学习总结
- winhex十六进制常用快捷键
- 奇怪吸引子---Qi
- Android-Kotlin在Fragment获取View
- JS中如何处理多个ajax并发请求?
- [翻译] Shimmer
- hdu6021[BestCoder #93] MG loves string
- kendalltau肯德尔和谐系数
- php将长字符串拆分为指定最大宽度的字符串数组
热门文章
- Linux配置DNS
- 把ubuntu自带的高gcc版本降到低版本(如gcc 3.4)的方法
- CentOS安装Hive
- 4 实战CPU上下文
- 发现一个企业微信第三方应用开发的疑似BUG
- 洛谷P5017:摆渡车——题解
- [翻译] InfluxDB 存储机制解析
- [Atcoder AGC029C]Lexicographic constraints
- 使用el-dialog时,报错“Unknown custom element:<;el-dialog>; did you register the component correctly?...make sure to provide the &#39;name&#39; option”
- 入门-windows下安装ETH挖矿