dfs与bfs实现
2014-04-18 10:49
417 查看
图
一、深度优先算法
v0->v1>v3->v7>v4->v2->v5->v6
二、广度优先算法
v0->v1->v2->v3->v4->v5->v6->v7
一、深度优先算法
v0->v1>v3->v7>v4->v2->v5->v6
#include <iostream> using namespace std; int visited[10]; int arr[10][10]; void init() { memset(visited,0,sizeof(int)*10); memset(arr,0,sizeof(int)*100); } void dfs(int nn,int num) { int i; visited[nn]=1; cout<<nn<<" "; for(i=0;i<num;i++) { if((arr[nn][i]>0)&&(!visited[i])) { dfs(i,num); } } } int main() { int t,m,n; int i,j; cin>>t; init(); for(i=0;i<t;i++) { cin>>m>>n; arr[m] =1; arr [m]=1; } for(i=0;i<t;i++) { if(!visited[i]) { dfs(i,t); } } return 0; }
二、广度优先算法
v0->v1->v2->v3->v4->v5->v6->v7
#include <iostream> #include <queue> using namespace std; int visited[10]; int arr[10][10]; queue<int> dqueue; void init() { memset(visited,0,sizeof(int)*10); memset(arr,0,sizeof(int)*100); } int main() { int t,m,n; int i,j; int x; cin>>t; for(i=0;i<t;i++) { cin>>m>>n; arr[m] =1; arr [m]=1; } for(i=0;i<t;i++) { if(!visited[i]) { visited[i]=1; dqueue.push(i); while(!dqueue.empty()) { x=dqueue.front(); cout<<dqueue.front()<<" "; dqueue.pop(); for(j=0;j<t;j++) { if(arr[x][j]&&(!visited[j])) { visited[j]=1; dqueue.push(j); } } } } } return 0; }
相关文章推荐
- #HDU2255#奔小康赚大钱(KM模板题)(两种方法实现:Dfs模板和Bfs模板)
- 搜索策略实现-DFS,BFS,爬山法,分支界限法
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
- 第六章:图。(邻接矩阵实现图的存储及dfs、bfs)
- 深度遍历(DFS)与广度遍历(BFS) (C语言实现)
- 用邻接表存储有向图并实现DFS(递归+非递归)BFS(非递归)两种遍历
- 【数据结构与算法】自己动手实现图的BFS和DFS(附完整源码)
- 第六章:图。(邻接表实现图的存储及dfs、bfs)
- 自己动手实现图的BFS和DFS(附完整源码)转
- 《算法导论》BFS和DFS实现
- BFS和DFS求最短路径的C++代码实现
- 第六章:图。(邻接矩阵实现图的存储及dfs、bfs)
- 二分图匹配匈牙利算法(DFS, BFS两种实现模板)
- DFS&BFS(链式前向星实现)
- 数据结构基础 图的遍历(三) 之 BFS+DFS(非递归实现)
- 深度优先DFS和广度优先BFS的非递归实现
- Hihocoder #1121 二分图一•二分图判定( bfs或者dfs搜索实现 搜索的过程中进行 节点标记 *【模板】)
- (番外)使用DFS和BFS实现拓扑排序
- 一些算法实现(bfs、dfs、Dijkstra)
- 数据结构之多叉树c实现DFS和BFS