比赛 皇后 评测结果 AAAAAAAAAAAAAAAA
题目名称 位图 最终得分 100
用户昵称 FFF团 运行时间 0.977 s
代码语言 C++ 内存使用 0.51 MiB
提交时间 2017-03-19 19:53:57
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
const int inf=10000;
int n,m;
char a[200][200];
int s[200][200];
struct pp{
	int x;
	int y;
};
pp t;
queue<pp>q;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
void bfs(int x,int y){
	t.x=x,t.y=y;
	q.push(t);
	while(q.size()){
		t=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int nx=t.x+dx[i];
			int ny=t.y+dy[i];
			pp p;
			p.x=nx;
			p.y=ny;
			if(1<=nx&&nx<=n&&1<=ny&&ny<=m&&s[nx][ny]>s[t.x][t.y]+1)q.push(p);
			s[nx][ny]=min(s[t.x][t.y]+1,s[nx][ny]);
		}
	} 
}
int main(){
	freopen("bit.in","r",stdin);
	freopen("bit.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("\n");
		for(int j=1;j<=m;j++){
		    scanf("%c",&a[i][j]);
		    s[i][j]=inf;
	    }
	}
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++){
		if(a[i][j]=='1'){
			s[i][j]=0;
			bfs(i,j);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<s[i][j]<<" ";
		}
		cout<<endl;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}