【图】BFS和DFS
来源:互联网 发布:2017网络最新最火的词 编辑:程序博客网 时间:2024/05/21 07:03
一、BFS
#include<iostream>#include<queue>using namespace std;const int max_num = 100;class BFS{public:typedef int VertexType;typedef int EdgeType;BFS();void create_graph();void bfs_traverse();private:EdgeType arc[max_num][max_num];bool visited[max_num];queue<EdgeType> que; //辅助队列int vertex_num;int edge_num;};BFS::BFS(){for (int i = 0; i < max_num; i++){for (int j = 0; j < max_num; j++){arc[i][j] = 0;}}memset(visited, false, sizeof(visited));while (!que.empty())que.pop();}void BFS::create_graph(){int i, j, k;cout << "请输入图的顶点数和边数:" << endl;cin >> vertex_num >> edge_num;for (i = 0; i < edge_num; i++){cout << "输入边(vj,vk)上的上标j,下标k" << endl;cin >> j >> k;arc[j][k] = arc[k][j] = 1;}}void BFS::bfs_traverse(){for (int i = 0; i < vertex_num; i++){if (!visited[i]){visited[i] = true;cout << i << " ";que.push(i);while (!que.empty()){int k = que.front();que.pop();for (int j = 0; j < vertex_num; j++){if (arc[k][j] == 1 && !visited[j]){visited[j] = true;cout << j << " ";que.push(j);}}}}}}int main(){BFS bfs;bfs.create_graph();bfs.bfs_traverse();return 0;}二、DFS
#include<iostream>using namespace std;const int max_num = 100;class DFS{public:typedef int VertexType;typedef int EdgeType;DFS();void create_graph();void dfs(int i);void dfs_traverse();private:EdgeType arc[max_num][max_num];bool visited[max_num];int vertex_num;int edge_num;};DFS::DFS(){for (int i = 0; i < max_num; i++){for (int j = 0; j < max_num; j++){arc[i][j] = 0;}}memset(visited, false, sizeof(visited));}void DFS::create_graph(){int i, j, k;cout << "请输入图的顶点数和边数:" << endl;cin >> vertex_num >> edge_num;for (i = 0; i < edge_num; i++){cout << "输入边(vj,vk)上的上标j,下标k" << endl;cin >> j >> k;arc[j][k] = arc[k][j] = 1;}}void DFS::dfs(int i){visited[i] = true;cout << i << " ";for (int j = 0; j < vertex_num; j++){if (arc[i][j] == 1 && !visited[j])dfs(j); //对未访问的邻接顶点递归调用 }}void DFS::dfs_traverse(){for (int i = 0; i < vertex_num; i++){if (!visited[i])dfs(i);}}int main(){DFS dfs;dfs.create_graph();dfs.dfs_traverse();return 0;}
0 0
- 【图】BFS和DFS
- 图的dfs和bfs
- 图以及DFS和BFS
- 树和图的BFS 和 DFS
- 图论中的BFS和DFS
- 图的BFS和DFS学习笔记
- 《大话数据结构》图的BFS和DFS
- 图的遍历(bfs 和dfs)
- 4.2-图的BFS和DFS
- 图的遍历:DFS和BFS
- 图的遍历:BFS和DFS
- 图的dfs遍历和bfs遍历
- 图的遍历:BFS和DFS
- 邻接矩阵图的dfs和bfs
- 图的DFS和BFS算法
- 自己动手实现图的BFS和DFS
- 图的遍历 DFS和BFS
- 图的遍历:DFS和BFS算法
- java设计模式之代理模式 (静态&动态)
- 蛇形填数 递归
- Android网络开发之HttpURLConnection
- 生活感触——锻炼中的坚持
- Fragment
- 【图】BFS和DFS
- C#中两个窗口怎么传递参数?或者怎么使用另一个窗口的控件呢?
- 51nod 1387 移数字(多项式除法)
- 第三周 项目1:个人所得税计算器
- soledede--泰勒级数
- UITableViewCell使用小结
- c 笔记
- Lua中的metatable详解
- 非常实用的30天学习30种技术