【图】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
原创粉丝点击