记录编号 435536 评测结果 AAAAAAAAAAAAAAAA
题目名称 [POI 1999] 位图 最终得分 100
用户昵称 GravatarRegnig Etalsnart 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2017-08-09 20:36:50 内存使用 0.00 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<queue>
#define syy myson
using namespace std;
const int maxn=40000;
int n,m,cnt=0,x[maxn],y[maxn],pic[200][200],dist[maxn],inque[maxn],i,j;
queue<int>q;
int Main()
{
	freopen("bit.in","r",stdin);freopen("bit.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<maxn;i++)dist[i]=maxn;
	for(i=1;i<=n;i++)
	{
		char s[200];
		scanf("%s",s);
		for(j=1;j<=m;j++)
		{
			cnt++;
			x[cnt]=i;
			y[cnt]=j;
			pic[i][j]=cnt;
			if(s[j-1]=='1')
			{
				dist[cnt]=0;
				q.push(cnt);
				inque[cnt]=1;
			}
		}
	}
	while(!q.empty())
	{
		int i=q.front();
		q.pop();
		int a=pic[x[i]+1][y[i]],b=pic[x[i]-1][y[i]],c=pic[x[i]][y[i]-1],d=pic[x[i]][y[i]+1];
		if(dist[a]>dist[i]+1)
		{
			dist[a]=dist[i]+1;
			if(!inque[a])
			{
				q.push(a);
				inque[a]=1;
			}
		}
		if(dist[b]>dist[i]+1)
		{
			dist[b]=dist[i]+1;
			if(!inque[b])
			{
				q.push(b);
				inque[b]=1;
			}
		}
		if(dist[c]>dist[i]+1)
		{
			dist[c]=dist[i]+1;
			if(!inque[c])
			{
				q.push(c);
				inque[c]=1;
			}
		}
		if(dist[d]>dist[i]+1)
		{
			dist[d]=dist[i]+1;
			if(!inque[d])
			{
				q.push(d);
				inque[d]=1;
			}
		}
		inque[i]=0;
	}
	cnt=0;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)printf("%d ",dist[++cnt]);
		printf("\n");
	}
	return 0;
}
int main(){;}
int syy=Main();