20分TLE求助
查看原帖
20分TLE求助
1284088
meifan666楼主2024/7/12 19:47
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[190][190];
int f[190][190];
void DFS(int x,int y,int sum){
	if(x<1||x>n||y<1||y>m||sum>f[x][y])return;
//	printf("%d %d\n",x,y);
	f[x][y]=sum;
	if(f[x+1][y]!=0)DFS(x+1,y,sum+1);
	if(f[x-1][y]!=0)DFS(x-1,y,sum+1);
	if(f[x][y+1]!=0)DFS(x,y+1,sum+1);
	if(f[x][y-1]!=0)DFS(x,y-1,sum+1);
	return;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]=='1'){
				f[i][j]=0;
			}else{
				f[i][j]=10000;
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]=='1'){
				DFS(i,j,0);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<f[i][j]<<' ';
		}
		cout<<'\n';
	}
	return 0;
}
2024/7/12 19:47
加载中...