比赛 练习赛 评测结果 AAEEAEEEEEEEEEEA
题目名称 位图 最终得分 25
用户昵称 Cici_1 运行时间 1.674 s
代码语言 C++ 内存使用 13.92 MiB
提交时间 2019-05-23 18:18:09
显示代码纯文本
#include<queue>
#include<iostream>
#include<cstdio>
using namespace std;
int a[151][151],visit[151][151],ans[151][151]={999999},fx[5]={1,-1,0,0},fy[5]={0,0,1,-1};
struct node{
	int x,y;
};
queue<node>q;
int main()
{
	freopen("bit.in","r",stdin);
	freopen("bit.out","w",stdout);
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		scanf("%1d",&a[i][j]);
		if(a[i][j]==1)
		{
			q.push((node){i,j});
			visit[i][j]=1;
		}
	}
	while(!q.empty())
	{
		int x=q.front().x,y=q.front().y;
		q.pop();
		for(int i=0;i<=3;i++)
		{
			int xx=x+fx[i],yy=y+fy[i];
			if((visit[xx][yy]==1)&&xx>0&&yy>0&&xx<=n&&yy<=m&&ans[xx][yy]>ans[x][y]+1)
			{
				ans[xx][yy]=ans[x][y]+1;
				q.push((node){xx,yy});
			}
			if((visit[xx][yy]==0)&&xx>0&&yy>0&&xx<=n&&yy<=m)
			{
				visit[xx][yy]=1;
				ans[xx][yy]=ans[x][y]+1;
				q.push((node){xx,yy});
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		printf("%d ",ans[i][j]);
	 printf("\n");
	}
	
	return 0;
}