DFS用到递归,BFS要用到一个辅助队列

#include "stdafx.h"

#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<algorithm>
#include<numeric> using namespace std;
struct AMGraph {
vector<int> vexs;
vector<vector<int>> arcs;
int vecnums, arcnums;
};
class Solution
{
public:
vector<bool> vistied;
AMGraph createGraph()
{
AMGraph G;
G.vecnums = 5;
G.arcnums = 5;
vector<int> vec1 = { 0,1,0,0,0 };
vector<int> vec2 = { 1,0,1,1,0 };
vector<int> vec3 = { 0,1,0,0,1 };
vector<int> vec4 = { 0,1,0,0,1 };
vector<int> vec5 = { 0,0,1,1,0 };
vector<vector<int>>vec;
vec.push_back(vec1);
vec.push_back(vec2);
vec.push_back(vec3);
vec.push_back(vec4);
vec.push_back(vec5); G.vexs = { 1,2,3,4,5 };
G.arcs = vec;
return G;
}
void DFS(AMGraph G,int v)
{
vistied[v] = true;
cout << v<<" ";
for (int i = 0;i < G.vecnums;i++)
{
if (G.arcs[v][i]==1 && vistied[i] == false)
{
DFS(G, i);
}
}
} void DFSTravers(AMGraph G)
{
vistied.clear();
for (int i = 0;i < G.vecnums;i++)
{
vistied.push_back(false);
}
for (int i = 0;i < G.arcnums;i++)
{
if (vistied[i] == false)
{
DFS(G, i);
}
}
cout << endl;
} queue<int> qu;
void BFS(AMGraph G,int v)
{
vistied[v] = true;
qu.push(v);
while (!qu.empty())
{
int v = qu.front();
qu.pop();
cout << v << " ";
for (int i = 0;i < G.vecnums;i++)
{
if (G.arcs[v][i] == 1 && vistied[i] == false)
{
vistied[i] = true;
qu.push(i);
}
}
} }
void BFSTravers(AMGraph G)
{
vistied.clear();
for (int i = 0;i < G.vecnums;i++)
{
vistied.push_back(false);
}
for (int i = 0;i < G.vecnums;i++)
{
if (vistied[i] == false)
{
BFS(G, i);
}
}
cout << endl;
}
}; int main()
{ Solution so;
AMGraph G=so.createGraph();
so.DFSTravers(G);
so.BFSTravers(G);
return 0; }

BFS 和 DFS的更多相关文章

  1. HDU-4607 Park Visit bfs | DP | dfs

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607 首先考虑找一条最长链长度k,如果m<=k+1,那么答案就是m.如果m>k+1,那么最 ...

  2. BFS和DFS详解

    BFS和DFS详解以及java实现 前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问 ...

  3. 算法录 之 BFS和DFS

    说一下BFS和DFS,这是个比较重要的概念,是很多很多算法的基础. 不过在说这个之前需要先说一下图和树,当然这里的图不是自拍的图片了,树也不是能结苹果的树了.这里要说的是图论和数学里面的概念. 以上概 ...

  4. hdu--1026--Ignatius and the Princess I(bfs搜索+dfs(打印路径))

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  5. 算法学习之BFS、DFS入门

    算法学习之BFS.DFS入门 0x1 问题描述 迷宫的最短路径 给定一个大小为N*M的迷宫.迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动.请求出从起点到终点所需的最小步数.如果不能到 ...

  6. 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/19617187 图的存储结构 本文的重点在于图的深度优先搜索(DFS)和广度优先搜索(BFS ...

  7. ACM__搜素之BFS与DFS

    BFS(Breadth_First_Search) DFS(Depth_First_Search) 拿图来说 BFS过程,以1为根节点,1与2,3相连,找到了2,3,继续搜2,2与4,相连,找到了4, ...

  8. BFS和DFS算法

    昨晚刚昨晚华为笔试题,用到了BFS和DFS,可惜自己学艺不精,忘记了实现原理,现在借用大佬写的内容给自己做个提高 转自:https://www.jianshu.com/p/70952b51f0c8 图 ...

  9. 通俗理解BFS和DFS,附基本模板

    1.BFS(宽度优先搜索):使用队列来保存未被检测的节点,按照宽度优先的顺序被访问和进出队列 打个比方:(1)类似于树的按层次遍历 (2)你的眼镜掉在了地上,你趴在地上,你总是先摸离你最近的地方,如果 ...

  10. [Algorithms] Graph Traversal (BFS and DFS)

    Graph is an important data structure and has many important applications. Moreover, grach traversal ...

随机推荐

  1. LINUX 下mysql导出数据、表结构

    1.首先要确认mysqldump命令所在路径 例如,我的在:/usr/bin/ 下 [root@sf105113 bin]# which mysqldump /usr/bin/mysqldump 2. ...

  2. My first blog on cnBlogs!

    以后会长期更新自己的心得体会!以此锻炼自己,奋发向前.

  3. 数据块dump详解及大小表扫描过程

    http://blog.csdn.net/u013820054/article/details/40378233 http://blog.csdn.net/u013820054/article/cat ...

  4. vue的表单的简单介绍 input radio checkbox等表单特性

    在vue中我们可以通过v-model来为表单元素实现双向绑定 1:v-model指令 数据的双向绑定 双向绑定是说我们不仅仅可以通过数据(M)的改变去影响视图(V),还是当视图的内容改变(V)去影响模 ...

  5. 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形 【转】

    http://blog.csdn.net/xiajun07061225/article/details/7628146 以前都是用Cg的,现在改用GLSL,又要重新学,不过两种语言很多都是相通的. 下 ...

  6. 项目笔记:导出XML和导出全部XML功能

    前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...

  7. ES里关于数组的拓展

    一.静态方法 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限.如果想将一个类数组对象(具有数值型索引和le ...

  8. Myeclipse 编译等级

    1.Java compiler level does not match the version of the installed Java project facet. 问题描述:编译等级不匹配 解 ...

  9. 计算机速度GHz等于每秒多少次

    这个是没有对比关系的.需要看处理器的微指令.计算机的GHz指的是CPU的时钟频率,不同的指令需要的时钟个数是不同的,列如,从内存读一个数据,一般需要4个时钟周期,而进行一次8位数的加法运算,一般需要1 ...

  10. swoole编译安装/数据库连接池/异步mysql客户端

    一.编译安装php5.6 0.安装必要软件 http://www.cnblogs.com/itfenqing/p/6055138.html 1.下载php5.6.30 http://php.net/d ...