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. 【bzoj2393】【Cirno的完美算数教室】容斥原理的剪枝应用

    (上不了p站我要死了,侵权度娘背锅) 在用容斥定理时,常常会用到dfs的形式,如果枚举完所有的情况可能会超时,其剪枝的优化很是重要. Description ~Cirno发现了一种baka数,这种数呢 ...

  2. Nginx的proxy_pass及upstream的小型负载均衡

    proxy_pass Nginx的proxy_pass将请求代理到其他的后端服务器.例如 listen 9999; server_name wyc.com; location /test/aaa { ...

  3. ARM常用汇编指令介绍

    b     跳转指令(跳转范围为32Mb) bl    带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行 pc    寄存器R1 ...

  4. Mycat查询时出现:Error Code: 1064. can't find any valid datanode

    说明:这个错误是查询时条件字段超过了范围导致的. 解释: 为什么会出现范围问题? 一般在MySQL查询时不会因为字段的值超过了范围而导致的,但是在Mycat中却不是这样认为的,Mycat是由于采用的分 ...

  5. 监控SQL Server正在执行的SQL语句和死锁情况

    原文:监控SQL Server正在执行的SQL语句和死锁情况 SELECT [Individual Query] = SUBSTRING(qt.TEXT, er.statement_start_off ...

  6. 对类中的成员函数的定义和声明最后添加一个const是什么意思?

    1.const修饰的成员函数只能调用const修饰的成员函数,且不能修改数据成员变量的值. 2.const修饰的类对象只能调用const修饰的成员函数. 3.const修饰的类对象可以调用非const ...

  7. SQL语言中的COMMENT添加字段的注释

  8. 【重点突破】—— 百度地图在React单页面应用中的使用

    前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...

  9. [PWA] Customize the Splash Screen of a PWA built with create-react-app

    Android displays a splash screen for PWAs based on the icons and names you provide, but iOS just dis ...

  10. Troubles in Building Android Source Code

    Some Troubles or problems you may encounter while you setup the Android source code build environmen ...