图的深度优先遍历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;
}

图论 - 图的深度优先遍历c++实现的更多相关文章

  1. 图的深度优先遍历DFS

    图的深度优先遍历是树的前序遍历的应用,其实就是一个递归的过程,我们人为的规定一种条件,或者说一种继续遍历下去的判断条件,只要满足我们定义的这种条件,我们就遍历下去,当然,走过的节点必须记录下来,当条件 ...

  2. 图的深度优先遍历(DFS) c++ 非递归实现

    深搜算法对于程序员来讲是必会的基础,不仅要会,更要熟练.ACM竞赛中,深搜也牢牢占据着很重要的一部分.本文用显式栈(非递归)实现了图的深度优先遍历,希望大家可以相互学习. 栈实现的基本思路是将一个节点 ...

  3. PTA 邻接矩阵存储图的深度优先遍历

    6-1 邻接矩阵存储图的深度优先遍历(20 分) 试实现邻接矩阵存储图的深度优先遍历. 函数接口定义: void DFS( MGraph Graph, Vertex V, void (*Visit)( ...

  4. C语言实现邻接矩阵创建无向图&图的深度优先遍历

    /* '邻接矩阵' 实现无向图的创建.深度优先遍历*/ #include <stdio.h> #include <stdlib.h> #define MaxVex 100 // ...

  5. 图的深度优先遍历(DFS)—递归算法

    实验环境:win10, DEV C++5.11 实验要求: 实现图的深度优先遍历 实验代码: #include <iostream> #define maxSize 255 #includ ...

  6. java实现图的深度优先遍历和广度优先遍

    首先需要知道的是,图的深度优先遍历是一种类似于树的前序遍历方式,即选择一个入口节点,沿着这个节点一直遍历下去,直至所有节点都被访问完毕:如果说,图的深度优先遍历类似于树的前序遍历的话,那么图的广度优先 ...

  7. 数据结构——图的深度优先遍历(邻接矩阵表示+java版本)

    ​1.深度优先遍历(DFS) 图的深度优先遍历本质上是一棵树的前序遍历(即先遍历自身,然后遍历其左子树,再遍历右子树),总之图的深度优先遍历是一个递归的过程. 如下图所示,左图是一个图,右图是图的深度 ...

  8. 1047图的深度优先遍历c语言

    描述 图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge):E是G中边的有限集合.设V={0,1,2,……,n-1},图中的结点又称为顶点(vert ...

  9. 图的深度优先遍历(DFS)和广度优先遍历(BFS)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

随机推荐

  1. prometheus、node_exporter、cAdvisor常用参数

    本节将介绍一下我在使用过程中用到的promethues.node_exporter.cAdvisor的常用参数,做一个总结 一.prometheus prometheus分为容器安装和二进制文件安装, ...

  2. Nginx 整合 Lua 实现动态生成缩略图

    原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...

  3. 【计算机视觉】【ARM-Linux开发】Ubuntu14.04下安装opencv3(anaconda3 Python3.6)

    首先附上一个stackoverflow上看到的问题:https://stackoverflow.com/questions/38787748/installing-opencv-3-1-with-an ...

  4. 自定义Yaml解析器替换Properties文件

    自定义Yaml解析器替换Properties文件 项目结构 案例代码 配置类SpringConfiguration @Configuration @Import(JdbcCofnig.class) @ ...

  5. springmvc的ajax

    Ajax在请求controller时会赋值的类型不变,但是返回值,因为会走视图解析器,所以会以地址的形式进行解析,而不会返回数据,需要在方法上加上注解,将返回类型解析成json类型 一.返回基本类型 ...

  6. ASp.net Core EF ActionFilterAttribute AOP

    在项目中经常遇到一些数据的修改,很多时候业务方需要一个修改日志记录,这里我们计划用mssql数据库来存放日志记录,用EF来操作,记录日志可以用mvc的ActionFilterAttribute 来完成 ...

  7. 计算标准差——Python

    计算标准差 题目描述: 编写一个函数计算一系列数的标准差.‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪ ...

  8. 动软软件 生成 实体类模板(EnterpriseFrameWork框架)

    1.废话不多说,直接上效果图 . 2 .动软模板代码 <#@ template language="c#" HostSpecific="True" #&g ...

  9. VS 发布MVC网站缺少视图

    mvc项目发布之后会有一些视图文件缺少,不包含在发布文件中,虽然可以直接从项目文件中直接拷贝过来,但还是想知道是什么原因,发布文件好像没有找到哪里有设置这个的地方 把生成操作:无-改成内容即可 原文

  10. js 时间格式化成字符串

    我用的简单的直接的字符串格式转化 function getTimeStr() { var date = new Date(); var year = date.getFullYear(); var m ...