您的位置:首页 > 其它

HDU 1241 Oil Deposits(宽搜)

2015-08-16 16:27 274 查看
//此题其实用深搜和宽搜都是可以的
#include<stdio.h>#include<queue>#include<string.h>#include<iostream>#define MAX 110using namespace std;struct Pos{int x,y;Pos(int xx,int yy):x(xx),y(yy){}};char Maze[MAX][MAX];int flag[MAX][MAX];int dir[8][2]={{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1}};int m,n;void fun(int i,int j){queue<Pos> a;a.push(Pos(i,j));flag[i][j]=1;while(!a.empty()){Pos temp=a.front();for(int k=0;k<8;k++){int Ni=temp.x+dir[k][1];int Nj=temp.y+dir[k][0];
                        //扩展新的节点if(Ni<0||Nj<0||Ni>=m||Nj>=n)continue;if(Maze[Ni][Nj]=='@'&&flag[Ni][Nj]==0){a.push(Pos(Ni,Nj));flag[Ni][Nj]=1;}}a.pop();}}int main(){while(cin>>m>>n,m||n){memset(flag,0,sizeof(flag));int cnt=0;//getchar();for(int i=0;i<m;i++){for(int j=0;j<n;j++)cin>>Maze[i][j];}for(int i=0;i<m;i++)for(int j=0;j<n;j++)if(Maze[i][j]=='@'&&flag[i][j]==0){fun(i,j);cnt++;}cout<<cnt<<endl;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: