P2298 Mzc和男家丁的游戏 编译错误求助!
  • 板块学术版
  • 楼主poor_OIer
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/26 22:16
  • 上次更新2024/7/27 08:46:10
查看原帖
P2298 Mzc和男家丁的游戏 编译错误求助!
704634
poor_OIer楼主2024/7/26 22:16
#include<bits/stdc++.h>
using namespace std;
int n,m,endx,endy;
bool flag[2005][2005];
struct node{
	int x;
	int y;
	int step=0;
};
queue<node> q;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
bool check(int x,int y)
{
	if(x<1||x>n||y<1||y>m)
		return false;
	return true;
}
void bfs()
{
	while(!q.empty())
	{
		for(int i=0;i<4;i++)
		{
			int nx=q.front().x+dx[i];
			int ny=q.front().y+dy[i];
			if(check(nx,ny)&&!flag[nx][ny])
			{
				//cout<<nx<<' '<<ny<<' '<<q.front().second<<endl;
				q.push((node){nx,ny,q.front().step+1});
				flag[nx][ny]=1;
				if(nx==endx&&ny==endy)
				{
					cout<<q.front().step;
					return;
				}
			}
		}
		q.pop();
	}
	cout<<"No Way!";
	return;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			char ch;
			cin>>ch;
			if(ch=='m')
				q.push((node){i,j,0}),flag[i][j]=1;
			if(ch=='#')
				flag[i][j]=1;
			if(ch=='d')
				endx=i,endy=j;
		}
	bfs();
	return 0;
}
2024/7/26 22:16
加载中...