记录编号 532242 评测结果 ATTTTTTTTTTTTTTA
题目名称 [POI 1999] 位图 最终得分 12
用户昵称 Gravatar欧鹰123 是否通过 未通过
代码语言 C++ 运行时间 14.082 s
提交时间 2019-05-25 18:21:28 内存使用 13.92 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,t,f[183][183],xj[4]={1,-1,0,0},yj[4]={0,0,1,-1},a[183][183],x[183],y[183],cnt;
void dfs(int x,int y)
{
	if(t==n*m)
	{
		return;
	}
	for(int i=0;i<4;i++)
	{
		int xi=x+xj[i];
		int yi=y+yj[i];
		if(xi>=1&&xi<=m&&yi>=1&&yi<=n)
		{
			f[xi][yi]=min(f[xi][yi],f[x][y]+1);
			t++;
			dfs(xi,yi);
			t--;
		}
	}
}
int main()
{
	freopen("bit.in","r",stdin);
	freopen("bit.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			char ta;
			cin>>ta;
			f[j][i]=20148598;
			a[i][j]=ta-'0';
			if(a[i][j]==1)
			{
				f[j][i]=0;
				x[++cnt]=j,y[cnt]=i;
			}
		}
	}
	for(int i=1;i<=cnt;i++)
	{
		dfs(x[i],y[i]);
		t=0;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<f[j][i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}