您的位置:首页 > 其它

hdu-1312-Red and Black

2013-08-08 15:44 405 查看

69
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
119
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
116
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
77
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
00


SampleOutput

45
59
6
13


#include<iostream>
#include<stdio.h>
#include<queue>
#include<cstring>
usingnamespacestd;
structnobe
{
intx,y;
};

charmap[150][150];
intvisit[150][150],flag,go[4][2]={0,-1,0,1,1,0,-1,0};
intn,m;
voidBFS(intx,inty)
{
inti;
queue<nobe>q;
nobeque,ue;
que.x=x;
que.y=y;
q.push(que);
while(!q.empty())
{
que=q.front();
q.pop();
for(i=0;i<4;i++)
{
ue=que;
ue.x+=go[i][0];
ue.y+=go[i][1];
if(ue.x>0&&ue.x<=n&&ue.y>0&&ue.y<=m&&!visit[ue.x][ue.y]&&map[ue.x][ue.y]=='.')
{
flag++;
visit[ue.x][ue.y]=1;
q.push(ue);
}
}
}
}
intmain()
{
inti,j,x,y;
while(scanf("%d%d",&m,&n))
{
if(n==0&&m==0)
break;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>map[i][j];
if(map[i][j]=='@')
{
x=i;
y=j;
}
}
}
memset(visit,0,sizeof(visit));
flag=1;
BFS(x,y);
printf("%d\n",flag);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: