hud 1241(BFS)

来源:互联网 发布:滴滴司机 知乎 编辑:程序博客网 时间:2024/06/05 05:34

一道简单的搜索题,本题我用的是广搜写的,深搜当然也可以...睡觉

#include <iostream>#include <queue>#include<string.h>using namespace std;int m,n;char map[105][105];int dir[][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};struct st{int x,y;st(int m=0,int n=0){x=m;y=n;}};void bfs(int x,int y){queue<st> Q;st fir;Q.push(st(x,y));map[x][y]='*';while(!Q.empty()){fir=Q.front();for(int i=0;i<8;i++){int tx=fir.x+dir[i][0],ty=fir.y+dir[i][1];if(map[tx][ty]=='@'){Q.push(st(tx,ty));map[tx][ty]='*';}}    Q.pop();}}int main(){while(scanf("%d%d",&n,&m)&&(n||m)){int num=0;memset(map,0,sizeof(map));for(int i=1;i<=n;i++)scanf("%s",map[i]+1);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(map[i][j]=='@'){num++;bfs(i,j);}}printf("%d\n",num);}}