90分求助大佬,第一个点WA了
查看原帖
90分求助大佬,第一个点WA了
523110
yqnyyh楼主2022/1/3 16:06
#include <bits/stdc++.h>
using namespace std;
int n,m,vis[3000][3000];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
char mapp[3000][3000];
struct data
{
    int x,y;
};
queue<data>q;
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
	{
        for(int j=1;j<=m;j++)
		{
			vis[i][j]=-1;
			cin>>mapp[i][j];
            if(mapp[i][j]=='m')
			{
                data start;
                start.x=i;
                start.y=j;
                q.push(start);
                vis[i][j]=0;
            }
        }
    }
    while(q.empty()==0)
	{
        data start=q.front();
        for(int i=0;i<4;i++)
		{
			data now;
            now.x=start.x+dx[i];
            now.y=start.y+dy[i];
            if(now.x>=n||now.y>=m||now.x<=1||now.y<=1) continue;
            if(vis[now.x][now.y]==-1&&mapp[now.x][now.y]!='#')
			{
                vis[now.x][now.y]=vis[start.x][start.y]+1;
                q.push(now);
            }
            if(mapp[now.x][now.y]=='d')
			{
                cout<<vis[now.x][now.y]<<endl;
                return 0;
            }
        }
        q.pop();
    }
    cout<<"No Way!"<<endl;
    return 0;
}
2022/1/3 16:06
加载中...