HDU 3085 Nightmare Ⅱ (双向广搜)


题意:有M,G两人和鬼魂(Z)在n*m的方格内,M每秒走3步,G每秒走一步,鬼魂每秒走2步,问是否能

不遇到鬼魂下两人相遇,鬼魂可以穿墙(X),人不可以。初始鬼魂有2个。





#include
#include
#include
#include
#include
#include
#include
#define M 800
using namespace std;

struct node
{
	int x,y;
	node(){}
	node(int xx,int yy)
	{
		x=xx;
		y=yy;
	}
}gg,mm,zz[2],f[2][M*M];
int step,front[2],rear[2];
char ma[M][M];
int n,m;
int dir[4][2]={{-1,0},{0,1},{0,-1},{1,0}};
bool maphaten(int x,int y)//马哈顿距离判断鬼魂是否会与人相遇
{
	if(x>=0&&x=0&&yq[3];
void clear()//记得清空队列
{
	for(int i=0;i<3;i++)
		while(!q[i].empty())
			q[i].pop();
}
bool bfs(int num,int move_step,char s,char e)//num:mm或是gg,move_step:每秒走的步数
{
	q[2]=q[num];//另外开个队列保存
	for(int i=0;i


你可能感兴趣的:(bfs)