Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

hdu 1175 连连看(广搜)

$
0
0

看题目请点这里

题意:

中文题不解释。

代码:

#include<iostream>    
#include<queue>    
using namespace std ;  
int n,m,q,flag[1001][1001],num[1001][1001],dir[4][2]={{-1, 0}, {0, 1}, {1, 0}, {0, -1}} ;     
char map[1001][1001] ;     
bool bfs(int se,int sy,int ex,int ey)    
{    
    int i,x1,y1,x2,y2;  
    memset(num,-1,sizeof(num));
    memset(flag,0,sizeof(flag));
    queue<int>Q ;     
    Q.push(se);     
    Q.push(sy);     
    while(Q.empty()==0)    
    {    
        x1=Q.front();     
        Q.pop() ;     
        y1=Q.front();     
        Q.pop() ;    
        if(x1==ex && y1==ey)
        {
            return true ;
        }
        for(i=0;i<4;i++)    
        {    
            x2=x1+dir[i][0];     
            y2=y1+dir[i][1]; 
            if( x2>=0 && x2<n && y2>=0 && y2<m && num[x1][y1]+1<=2 && flag[x2][y2]==0)
            {
                if(x2==ex && y2==ey)
                {
                    return true ;
                }
                while( x2>=0 && x2<n && y2>=0 && y2<m && map[x2][y2]=='0' && flag[x2][y2]==0)    
                {    
                    num[x2][y2]=num[x1][y1]+1;
                    flag[x2][y2]=1;
                    Q.push(x2);     
                    Q.push(y2);     
                    x2+=dir[i][0];     
                    y2+=dir[i][1];  
                    if(x2==ex && y2==ey)
                    {
                        return true;
                    }
                }    
            }    
        }  
    }  
    return false;
}
int main()    
{    
    int qx1,qy1,qx2,qy2,i,j;
    while(scanf("%d %d",&n,&m),m||m)
    {
        for(i=0;i<n;i++)
        {
            getchar();
            for(j=0;j<m;j++)
            {
                scanf(j==0 ? "%c" : " %c",&map[i][j]);
            }
        }
        scanf("%d",&q);
        for(i=0;i<q;i++)
        {
            scanf("%d %d %d %d",&qx1,&qy1,&qx2,&qy2);
            if(map[qx1-1][qy1-1]==map[qx2-1][qy2-1] && map[qx1-1][qy1-1]!='0' && map[qx2-1][qy2-1]!='0')
            {
                puts( bfs(qx1-1,qy1-1,qx2-1,qy2-1) ? "YES" : "NO" );
            }
            else
            {
                puts("NO");
            }
        }
    }
}


作者:pxz8858 发表于2012-12-25 20:25:54 原文链接
阅读:0 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles