求hack
查看原帖
求hack
1044870
Lyrith_with_xQ楼主2023/8/27 12:18
#include <bits/stdc++.h>
using namespace std;

int n,m,x,y;
char mp[185][185];
int dis[185][185],dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
queue<pair<int,int> > q;

void dfs(int x,int y)
{
	dis[x][y]=0;
	q.push(make_pair(x,y));
	while(!q.empty())
	{
		int a=q.front().first,b=q.front().second;
		q.pop();
		for(int i=0;i<4;i++)
		{
			int f=0;
			int nx=a+dir[i][0],ny=b+dir[i][1];
			if(nx<0||nx>=n||ny<0||ny>=m)continue;
			if(dis[nx][ny]==-1)
			{
				dis[nx][ny]=0x3f3f3f3f;
				f=1;
			}
			if(mp[nx][ny]=='1')dis[nx][ny]=0;
			else dis[nx][ny]=min(dis[a][b]+1,dis[nx][ny]);
			if(f)q.push(make_pair(nx,ny));
		}
	}
}

int main()
{
	memset(dis,-1,sizeof(dis));
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>mp[i][j];
			if(mp[i][j]=='1')
			{
				x=i;
				y=j;
			}
		}
	}
	dfs(x,y);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)cout<<dis[i][j]<<" ";
		cout<<"\n";
	}
	return 0;
}

应该是逻辑出了问题,求hack

2023/8/27 12:18
加载中...