杭州電1312題の検索アルゴリズム
1608 ワード
テーマリンク:http://acm.hdu.edu.cn/showproblem.php?pid=1312
#include
#include
#include
using namespace std;
/* . ,# ,@ , */
struct node //
{
int x; //x
int y; //y
};
queueq; //
char maze[105][105]; //
bool vis[105][105];//
bool xin[105][105];//
int n,m,total;
int dx[4]={1,-1,0,0}; //
int dy[4]={0,0,1,-1}; //
void bfs(node t) //
{
node g,h;
q.push(t);
while(!q.empty()) // ,
{
g=q.front();
vis[g.x][g.y]=true; //
if(!xin[g.x][g.y])
{
total++;
xin[g.x][g.y]=true;
}
for(int i=0;i<4;i++)
{
h.x=g.x+dx[i]; h.y=g.y+dy[i];
if(h.x>=0&&h.x=0&&h.y=0&&h.x=0&&h.y>n>>m)//m ,n
{
if(n==0&&m==0) break;
total=0;
memset(vis,false,sizeof(vis));
memset(xin,false,sizeof(xin));
for(int i=0;i>maze[i][j];
if(maze[i][j]=='@')
{
h.x=i; h.y=j; //
}
}
dfs(h);
while(!q.empty()) q.pop(); // ,
cout<