杭州電1312題の検索アルゴリズム


テーマリンク: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<