deque最短路代码wa了
#include<bits/stdc++.h>
#define il inline
#define db double
// #define int ll
#define ll long long
#define ull unsigned long long
#define pb emplace_back
#define MP make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define ls k<<1
#define rs k<<1|1
#define CLK (double)clock()/(double)CLOCKS_PER_SEC
using namespace std;
mt19937 rnd(time(0));
inline int read(){
register int x=0,f=1;
register char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void write(register int x){
if(x<0){putchar('-');x=-x;}
if(x>9)write(x/10);
putchar(x%10+'0');
}
const int N=4e5+5,inf=1e9;
const int dx[4]={1,1,-1,-1};
const int dy[4]={1,-1,1,-1};
int n,m,dis[N],vis[N];
pii pre[N];
string s[N];
int get(int x,int y){return (x-1)*m+y;}
bool chk(int tx,int ty){
if(tx<1||tx>n||ty<1||ty>m||(s[tx][ty]=='.'&&(s[tx][ty+1]=='#'||s[tx][ty-1]=='#'||s[tx+1][ty]=='#'||s[tx-1][ty]=='#')))return 0;
else return 1;
}
void solve(){
deque<pii>q;
n=read();m=read();
for(int i=1;i<=n;i++)s[i]="",cin>>s[i],s[i]="0"+s[i];
memset(dis,0x3f,sizeof dis);
memset(vis,0,sizeof vis);
memset(pre,0,sizeof pre);
for(int i=1;i<=n;i++){
int id=get(i,1);vis[id]=1;
if(s[i][1]=='.'&&chk(i,1))dis[id]=1,vis[id]=1,q.push_back(MP(i,1));
if(s[i][1]=='#')dis[id]=0,vis[id]=1,q.push_front(MP(i,1));
}
while(!q.empty()){
pii x=q.front();q.pop_front();
// cout<<x.fi<<' '<<x.se<<' '<<dis[get(x.fi,x.se)]<<"\n";
for(int k=0;k<4;k++){
int tx=x.fi+dx[k],ty=x.se+dy[k],id=get(tx,ty);
if(vis[id]||!chk(tx,ty))continue;
// cout<<x.fi<<' '<<x.se<<' '<<tx<<' '<<ty<<"\n";
vis[id]=1;
if(s[tx][ty]=='.')dis[id]=dis[get(x.fi,x.se)]+1,pre[id]=x,q.push_back(MP(tx,ty));
else dis[id]=dis[get(x.fi,x.se)],pre[id]=x,q.push_front(MP(tx,ty));
}
}
int ans=inf;pii res;
for(int i=1;i<=n;i++)if(dis[get(i,m)]<ans)ans=dis[get(i,m)],res=MP(i,m);
if(ans==inf){puts("NO");return ;}
while(1){
int x=res.fi,y=res.se;s[x][y]='#';
res=pre[get(x,y)];if(res==MP(0,0))break;
}
puts("YES");
for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)cout<<s[i][j];cout<<"\n";}
}
signed main(){
// freopen("read.in","r",stdin);
// freopen("write.out","w",stdout);
int T=read();while(T--)solve();
// printf("\nTIME:%lf\n",(double)clock()/CLOCKS_PER_SEC);
return 0;
}