73分求助
查看原帖
73分求助
1115386
dingxiangqian楼主2025/2/5 13:38

#1 #9 #10 WA求大佬指教

#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define int long long
using namespace std;
struct node
{
    int x,y;
};
int dx[12]={1,-1,0,0,1,1,-1,-1};
int dy[12]={0,0,1,-1,1,-1,-1,1};
queue<node>q;
char g[110][110];
int w,h,x1,y1;
int dis[110][110];
bool end()
{
    for(int i=1;i<=h;i++)
	for(int j=1;j<=w;j++)
	{
	    if(g[i][j]=='.')return false;
	}
	return true;
}
signed main(){
    memset(dis,-1,sizeof(dis));
	cin>>h>>w>>x1>>y1;
	for(int i=1;i<=h;i++)
	for(int j=1;j<=w;j++)
	{cin>>g[i][j];}
	dis[x1][y1]=1;
	q.push({x1,y1});
	g[x1][y1]='M';
	while(!q.empty())
	{
	    node cur=q.front();
	    q.pop();
	    if(end())
	    {
	        cout<<dis[cur.x][cur.y];
	        return 0;
	    }
	    for(int i=0;i<8;i++)
	    {
	        int xx=cur.x+dx[i];
	        int yy=cur.y+dy[i];
	        if(dis[xx][yy]==-1&&g[xx][yy]=='.')
	        {
	            dis[xx][yy]=dis[cur.x][cur.y]+1;
	            g[xx][yy]='M';
	            q.push({xx,yy});
	        }
	    }
	}
	return 0;
}
2025/2/5 13:38
加载中...