您的位置:首页 > 其它

HDU 2952 Counting Sheep(bfs)

2016-02-13 17:25 393 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2952

代码:

#include<stdio.h>
#include<string.h>
#include<queue>

using namespace std;

char maps[105][105];
int fx[4]={1,0,-1,0};
int fy[4]={0,-1,0,1};
int dis[105][105];

int a,b;
struct node
{
int x,y;
}point[105];

bool judge(int x,int y)
{
if(x>=0&&x<a&&y>=0&&y<b&&maps[x][y]=='#')
return  true;
return false;
}

int bfs(int xx,int yy)
{
queue<node>q;
node star,en;
star.x=xx;
star.y=yy;
q.push(star);
dis[xx][yy]=1;
while(!q.empty())
{
en=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int dx,dy;
dx=en.x+fx[i];
dy=en.y+fy[i];
if(judge(dx,dy)&&dis[dx][dy]==0)
{
star.x=dx;
star.y=dy;
q.push(star);
dis[dx][dy]=dis[en.x][en.y]+1;
}
}
}
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
for(int i=0;i<a;i++)
{
scanf("%s",maps[i]);
}
int ans=0;
memset(dis,0,sizeof(dis));
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
if(maps[i][j]=='#'&&dis[i][j]==0)
{
bfs(i,j);
ans++;
}
}
}
printf("%d\n",ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: