1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10; const double pi = 3.1415926535897932384626433832795; const double eln = 2.718281828459045235360287471352;
#define f(i, a, b) for (int i = a; i <= b; i++) #define scan(x) scanf("%d", &x) #define mp make_pair #define pb push_back #define lowbit(x) (x&(-x))
#define fi first #define se second #define SZ(x) int((x).size()) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define summ(a) (accumulate(all(a), 0ll))
typedef unsigned long long ull; typedef pair<int,int> pii; typedef vector<int> vi;
using ll=long long;
ll tt,n,m,a[(int)109][(int)109] ; char c;
void dfs(int x,int y){ if(x<=0 || y<=0 || x>=n || y>=m)return; ll p=-1,q=-1,cnt=0; for(int i=0;i<=1;++i)for(int j=0;j<=1;++j)cnt+=a[x+i][y+j]==1; if(cnt!=1)return; for(int i=0;i<=1;++i)for(int j=0;j<=1;++j)if(a[x+i][y+j]==1){p=i,q=j;} if(a[x+!p][y+q]==a[x+p][y+!q]&&(a[x+!p][y+q]^a[x+!p][y+!q])==1){ a[x+p][y+q]=a[x+!p][y+q]; for(int i=0;i<=1;++i)for(int j=0;j<=1;++j)dfs(x+p-i,y+q-j); } }
bool solve(){ for(int i=1;i<n;++i){ for(int j=1;j<m;++j){ dfs(i,j); } } for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){ if(a[i][j]==1){ a[i][j]=3; for(int k=0;k<=1;++k)for(int l=0;l<=1;++l)dfs(i-k,j-l); } } for(int i=1;i<n;++i)for(int j=1;j<m;++j){ if(a[i][j]==a[i+1][j+1]&&a[i+1][j]==a[i][j+1]&&a[i][j]!=a[i+1][j])return false; } return true; }
int main() { for(scanf("%lld",&tt);tt;tt-=1){ scanf("%lld%lld",&n,&m); for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ scanf(" %c",&c); if(c=='?')a[i][j]=1; else if(c=='B')a[i][j]=2; else a[i][j]=3; } a[i][m+1]=0; } for(int i=1;i<=m+1;++i)a[n+1][m]=0; if(solve()){ printf("%s","YES\n"); for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j)printf("%c",a[i][j]==2?'B':'W'); printf("\n"); } }else printf("%s","NO\n"); } return 0; }
|