Why MLE?
  • 板块学术版
  • 楼主2021zjhs005
  • 当前回复8
  • 已保存回复9
  • 发布时间2024/3/20 19:22
  • 上次更新2024/3/20 19:48:55
查看原帖
Why MLE?
1121995
2021zjhs005楼主2024/3/20 19:22

rt。

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,x,y) for(int i=x;i<=y;i++)
#define rrep(i,x,y) for(int i=x;i>=y;i--)
#define sc scanf
#define pr printf
inline int read(){int s=0,w=1;char c=getchar();while(!isdigit(c)){if(c=='-') w=-1;c=getchar();}while(isdigit(c)){s=(s<<1)+(s<<3)+(c^48);c=getchar();}return s*w;}

const int N=1e3+1;
int n,m,a[N][N];
string s;
const int fx[4]={-1,0,1,0},fy[4]={0,1,0,-1};

  queue <pair <int,int> > q;

inline void init(){
  rep(i,1,n)
    rep(j,1,m)
      if(a[i][j]!=0){
        q.push(make_pair(i,j));
        a[i][j]=0; // cout<<"hello\n";
    }
}
inline void bfs(){
  init();
  while(!q.empty()){
    int nowx=q.front().first,nowy=q.front().second;
    q.pop();
    rep(i,0,3){
      int ax=nowx+fx[i],ay=nowy+fy[i];
      if(ax<1||ax>n||ay<1||ay>m||a[ax][ay]==0x3f3f3f3f) continue;
      q.push({ax,ay});
      a[ax][ay]=a[nowx][nowy]+1;
    }
  }
}

inline void print(){
  rep(i,1,n){rep(j,1,m)pr("%lld ",a[i][j]);pr("\n");}
}
signed main(){
  memset(a,0x3f3f3f3f,sizeof a);
  n=read();m=read();
  rep(i,1,n){
    cin>>s;
    int len=m;
    rep(j,0,len-1) a[i][j+1]=(s[j]-'0');
  }
  bfs();
  print();
  return 0;
}
2024/3/20 19:22
加载中...