#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1005;
const int mod=998244353;
char s[maxn];
int fl[maxn],fr[maxn],sl,sr,flr,n,m,i,j,ans;
int quick_mod(ll n,int m)
{
ll res=1;
while(m)
{
if(m&1)
res=res*n%mod;
n=n*n%mod;
m>>=1;
}
return (int)res;
}
void init()
{
memset(fl,-1,sizeof(fl));
memset(fr,-1,sizeof(fr));
sr=n;
sl=m;
flr=-1;
ans=0;
}
int main()
{
//freopen("C:\\Users\\杨凡\\Desktop\\数据\\1003.in","r",stdin);
int t,i,j,flag;
scanf("%d",&t);
while(t--&&scanf("%d%d",&n,&m)!=EOF)
{
init();
for(i=0;i<n;i++)
{
scanf("%s",s);
for(j=0;s[j];j++)
{
if(s[j]=='?')
continue;
flag=0;
if(s[j]=='B')
flag=1;
if((i+j)&1)
flag=!flag;
if(fr[i]==-1)
{
fr[i]=flag;
sr--;
}
else if(fr[i]!=flag)
sr=-1;
if(fl[j]==-1)
{
fl[j]=flag;
sl--;
}
else if(fl[j]!=flag)
sl=-1;
if(flr==-2)
continue;
if(flr==-1)
flr=flag;
else if(flr!=flag)
flr=-2;
}
}
if(sl>=0)
ans=(ans+quick_mod((ll)2,sl))%mod;
if(sl>=0)
ans=(ans+quick_mod((ll)2,sr))%mod;
if(flr>=-1)
{
if(flr==-1)
ans=(ans-2+mod)%mod;
else
ans=(ans-1+mod)%mod;
}
printf("%d\n",ans);
}
return 0;
}
hdu6122 数学
最新推荐文章于 2019-07-04 12:24:00 发布