BFS【模板题】
来源:互联网 发布:淘宝详情页psd模板 编辑:程序博客网 时间:2024/05/20 03:44
广度优先搜索算法(Breadth-First-Search),又译作宽度优先搜索,或横向优先搜索,简称BFS,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。
#include<stdio.h>#include<string.h>#include<queue>using namespace std;struct node{int x,y,step;};char map[105][105];int vis[105][105];int to[4][2]={0,1,0,-1,1,0,-1,0};int n,m,sx,sy,ans;int check(int x,int y){if(x<0||x>=n||y<0||y>=m)return 1;if(vis[x][y]||map[x][y]=='#')return 1;return 0;}void bfs(){int i;queue<node>Q;node a,next;a.x=sx;a.y=sy;a.step=0;vis[a.x][a.y]=1;Q.push(a);while(Q.empty()){Q.front();Q.pop();if(map[a.x][a.y]=='E'){ans=a.step;return ;}for(i=0;i<4;i++){next=a;next.x+=to[i][0];next.y+=to[i][1];if(check(next.x,next.y))continue;next.step=a.step+1;Q.push(next);}}ans=-1;}int main(){int t,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%s",map[i]);for(i=0;i<n;i++)for(j=0;j<m;j++)if(map[i][j]=='S'){sx=i;sy=j;}memset(vis,0,sizeof(vis));bfs();printf("%d\n",ans);}return 0;}
0 0
- BFS【模板题】
- hdu 1312 BFS模板题
- 水池数目(bfs模板题)
- 【模板】BFS
- bfs模板
- BFS模板
- 模板,BFS
- BFS模板
- BFS 模板
- BFS模板
- bfs模板
- bfs模板
- BFS 模板
- BFS模板
- BFS模板
- bfs模板
- bfs模板
- bfs模板
- Networking Layers
- Swift编程语言学习9—— 存储属性和计算属性
- Linux0.11内核 进程睡眠和唤醒
- UF超滤膜:超滤膜技术介绍
- POJ 2388 Who's in the Middle
- BFS【模板题】
- linux快速启动工具(二)
- vc++学习体验(一)
- vi 命令 用法
- 视频参数介绍以及各参数之间的关系
- 开发者必备的6款源码搜索引擎
- 图片信息转化为NSData
- 为什么eval转换json对象字符串时要加括号?
- MH17遇难者遭受最后的侮辱 遗体经三日暴晒后由垃圾车运走