记录编号 |
435536 |
评测结果 |
AAAAAAAAAAAAAAAA |
题目名称 |
[POI 1999] 位图 |
最终得分 |
100 |
用户昵称 |
Regnig 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();