在邻接矩阵中的DFS与BFS的实现
来源:互联网 发布:英格拉姆弹跳数据 编辑:程序博客网 时间:2024/05/22 13:51
大致思路:
对于已经找到的 x,y 在矩阵中进行行遍历和列遍历。遇到存在的边则进行BFS或DFS
代码:
p.s 代码中均是以无向图为例
BFS
#include<bits/stdc++.h>using namespace std;const int maxn=110;typedef struct{ int x,y;}Node;int mp[maxn][maxn];queue<Node> q;void bfs(int x,int y,int n){ int cnt=1; Node a; a.x=x;a.y=y; q.push({x,y}); while(!q.empty()) { Node b=q.front(); q.pop(); for(int i=1;i<=n;++i){//行遍历和列遍历 if(mp[b.x][i]){ q.push({b.x,i}); mp[b.x][i]=0;//及时标记 mp[i][b.x]=0; cnt++; } if(mp[i][b.y]){ q.push({i,b.y}); mp[i][b.y]=0; mp[b.y][i]=0; cnt++; } } } cout<<cnt<<endl;}void print(int n){ for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j) cout<<mp[i][j]<<" "; cout<<endl; }}int main(){ int n; cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) cin>>mp[i][j]; bool flag=false; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ if(mp[i][j]){ mp[j][i]=0; mp[i][j]=0; bfs(i,j,n); flag=true; break; } } if(flag) break; } print(n); return 0;}
DFS
#include<bits/stdc++.h>using namespace std;const int maxn=110;int mp[maxn][maxn],cnt;void dfs(int x,int y,int n){ for(int i=1;i<=n;++i){ if(mp[i][y]){ mp[y][i]=0; mp[i][y]=0; cnt++; dfs(i,y,n); } if(mp[x][i]){ mp[x][i]=0; mp[i][x]=0; cnt++; dfs(x,i,n); } }}void print(int n){ for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j) cout<<mp[i][j]<<" "; cout<<endl; }}int main(){ int n; cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) cin>>mp[i][j]; bool flag=false; for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ if(mp[i][j]){ cnt=1; mp[j][i]=0; mp[i][j]=0; dfs(i,j,n); flag=true; break; } } if(flag) break; } cout<<cnt<<endl; print(n); return 0;}
阅读全文
0 0
- 在邻接矩阵中的DFS与BFS的实现
- 图的BFS和DFS在数据结构为邻接矩阵时的实现
- [数据结构]图基于邻接矩阵的BFS与DFS的C语言简单实现
- 数据结构 邻接矩阵的BFS DFS
- 邻接矩阵实现图的存储,DFS,BFS遍历
- java版 图的邻接表、邻接矩阵、BFS、DFS 实现
- 图的邻接矩阵表示 DFS 和BFS C++实现
- C语言实现图的邻接矩阵和BFS DFS
- 有向图的DFS和BFS(邻接矩阵实现)
- 图的邻接矩阵表示(DFS,BFS)
- 邻接矩阵图的dfs和bfs
- 邻接矩阵的DFS 和 BFS 搜索遍历
- dfs与bfs实现
- 图的遍历(BFS、DFS的邻接矩阵和邻接表实现)
- 第六章:图。(邻接矩阵实现图的存储及dfs、bfs)
- 邻接矩阵实现--图的深度优先遍历DFS和广度优先遍历BFS
- DFS与BFS的代码实现
- 邻接矩阵 遍历 DFS And BFS~~~
- VC++ 如何实现程序启动后最小化到托盘
- uitableview contentview 添加子view出现约束错误
- html中img图片路径src不对的问题
- EA&UML日拱一卒--活动图::入门
- CS224d Assignment1 答案, Part(2/4)
- 在邻接矩阵中的DFS与BFS的实现
- Leetcode 360 Sort Transformed Array
- vim安装插件YouCompleteMe,出错,YouCompleteMe unavailable: requires Vim compiled with Python 2.x support
- 编译防火墙——C++的Pimpl惯用法解析
- socket学习
- linux线程系列(5)线程清理和控制函数
- SVM简单代码实现MATLAB
- CS224d Assignment1 答案, Part(3/4)
- C++ 将当前系统时间转换成标准格式的时间和时间戳