#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
vector<P> v;
int vis[1010][1010];
int Vis[1010][1010];
char mp[1010][1010];
int flag=0;
int dx[4]={0,0,1,-1};
int dy[4]={-1,1,0,0};
int n,m;
void dfs(int x,int y)
{
vis[x][y]=1;
flag++;
v.push_back(make_pair(x,y));
for(int i=0;i<4;i++)
{
int Dx = x + dx[i];
int Dy = y + dy[i];
if(Dx>=1&&Dx<=n&&Dy>=1&&Dy<=m&&mp[Dx][Dy]=='.'&&vis[Dx][Dy]==0)
{
dfs(Dx,Dy);
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp[i][j];
}
}
int ans=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(mp[i][j]=='.'&&vis[i][j]==0)
{
flag=0;
v.clear();
dfs(i,j);
for(int k=0;k<v.size();k++)
{
vis[v[k].first][v[k].second]=flag;
Vis[v[k].first][v[k].second]=ans;
}
ans++;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(mp[i][j]=='.') cout<<mp[i][j];
else
{
int temp = vis[i-1][j];
if(Vis[i+1][j]!=Vis[i-1][j])
{
temp+=vis[i+1][j];
}
if(Vis[i][j-1]!=Vis[i+1][j]&&Vis[i][j-1]!=Vis[i-1][j])
{
temp+=vis[i][j-1];
}
if(Vis[i][j+1]!=Vis[i][j-1]&&Vis[i][j+1]!=Vis[i-1][j]&&Vis[i][j+1]!=Vis[i+1][j])
{
temp+=vis[i][j+1];
}
cout<<(temp+1)%10;
}
}
cout<<endl;
}
return 0;
}
深搜典中典
最新推荐文章于 2024-08-22 17:27:46 发布