HDOJ-1072 Nightmare

66666666666666,看完答案代码后,第一次完全理解后自己敲出来BFS ,很激动

#include
#include
using namespace std;
int map[20][20],vis[20][20],n,m,ex,ey,c,flag;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
struct node{
	int tx,ty;
	int temp;
	int g;
	
};

void qwer(int x,int y)
{
	node a;
	a.g=0;
	a.temp=6;
	vis[x][y]=6;
	a.tx=x;
	a.ty=y;
	queueque;
	que.push(a);
	while(!que.empty())
	{
		node b;
		b=que.front();
		que.pop();
		if(b.tx==ex&&b.ty==ey)
		{	c=b.g;
			flag=1;
			return;
		}
		if(b.temp==1)
		continue;
		for(int i=0;i<4;i++)
		{
			node h;
			h.tx=b.tx+dx[i];
			h.ty=b.ty+dy[i];
			h.temp=b.temp-1;
			if(map[h.tx][h.ty]!=0&&h.tx>=0&&h.tx=0&&h.tyvis[h.tx][h.ty])
				{
					vis[h.tx][h.ty]=h.temp;//记录时间
					que.push(h); 
				}
			}
		}
	}
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{	
		flag=0;
		scanf("%d%d",&n,&m);
		int i,j,sx,sy;
		for(i=0;i

 

你可能感兴趣的:(DFS,搜索,acm)