40分tle求助
查看原帖
40分tle求助
632063
shipeiqian楼主2024/10/4 15:39
#include <bits/stdc++.h>
#define pii pair<int,int> 
using namespace std;
const int N=200;
int n,m,a[N][N],vis[N][N],dis[N][N],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int main(){
	cin >>n >>m;
	queue<pii>q;
	memset(dis,0x3f,sizeof(dis));
	for(int i=1;i<=n;i++){
		string s;
		cin >>s;
		for(int j=0;j<m;j++){
			a[i][j+1]=s[j]-'0';
			if(a[i][j+1]==1){
				q.push({i,j+1});
				dis[i][j+1]=0;
			}
		}
	}
	while(!q.empty()){
		int nowx=q.front().first,nowy=q.front().second;
		q.pop();
		vis[nowx][nowy]=1;
		for(int i=0;i<4;i++){
			int nx=nowx+dx[i],ny=nowy+dy[i];
			if(nx<1||ny<1||nx>n||ny>m||dis[nx][ny]<dis[nowx][nowy]+1||vis[nx][ny])continue;
			dis[nx][ny]=dis[nowx][nowy]+1; 
			q.push({nx,ny});
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout <<dis[i][j] <<" ";
		}
		cout <<"\n";
	}
}
2024/10/4 15:39
加载中...