比赛 练习赛 评测结果 AAAAAAAAAAAAAAAA
题目名称 位图 最终得分 100
用户昵称 梦那边的美好ET 运行时间 0.751 s
代码语言 C++ 内存使用 13.96 MiB
提交时间 2019-05-22 11:40:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,mp[200][200],f[200][200],ans=0;
char s[200];
int ju(){
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
		    if(mp[i][j]==99999)
			    return 1;
	return 0;	
}
int main(){ 
    freopen("bit.in","r",stdin);        
    freopen("bit.out","w",stdout);    
	scanf("%d%d",&n,&m);
	for(int i=0;i<=n+1;i++)
	    for(int j=0;j<=m+1;j++)	
	        mp[i][j]=99999;
	for(int i=1;i<=n;i++){
    	scanf("%s",s+1);
	    for(int j=1;j<=m;j++)if(s[j]=='1')mp[i][j]=0;
	}
	while(ju()){++ans;
	    for(int i=1;i<=n;i++)
	        for(int j=1;j<=m;j++)
			    f[i][j]=mp[i][j];
		for(int i=1;i<=n;i++)
	        for(int j=1;j<=m;j++)	
			    if(mp[i][j]==99999)
				    if(mp[i-1][j]!=99999||mp[i][j-1]!=99999||mp[i+1][j]!=99999||mp[i][j+1]!=99999)
					    f[i][j]=ans;
	    for(int i=1;i<=n;i++)
	        for(int j=1;j<=m;j++)
			    mp[i][j]=f[i][j];
	}
	for(int i=1;i<=n;i++){
	    for(int j=1;j<=m;j++)printf("%d ",mp[i][j]);
	    printf("\n");
	}
    return 0;
}