我的代码连TJ里样例也AC了 就是第一个样例错了
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,num,uo;
char a[15][15];
bool vis[15][15];
bool f[15][15];
queue< pair<int,int> >q;
int fx[10]={-1,1,0,0};
int fy[10]={0,0,-1,1};
int Flag(int x,int y){
if(x>=0&&x<9&&y>=0&&y<9){
return 1;
}
else{
return 0;
}
}
int bfs(int sx,int sy){
// memset(vis,0,sizeof vis);
num=0;
vis[sx][sy]=1;
q.push(make_pair(sx,sy));
while(!q.empty()){
int r=q.front().first;
int c=q.front().second;
q.pop();
for(int i=0;i<=3;i++){
int dx=r+fx[i];
int dy=c+fy[i];
if(!Flag(dx,dy)){
continue;
}
if(!f[dx][dy]&&a[dx][dy]=='.'){
f[dx][dy]=1;
num++;
}
else if(!vis[dx][dy]&&a[dx][dy]=='o'){
vis[dx][dy]=1;
q.push(make_pair(dx,dy));
}
}
}
return num;
}
main(){
scanf("%lld",&T);
while(T--){
sizeof(vis,0,sizeof vis);
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
scanf("%c",&a[i][j]);
}
}
bool flag=false;
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(a[i][j]=='o'&&!vis[i][j]){
memset(f,false,sizeof(f));
if(bfs(i,j)==1){
flag=true;
break;
}
}
}
if(flag==1)break;
}
if(flag){
printf("Case #%lld: Can kill in one move!!!\n",++uo);
}
else{
printf("Case #%lld: Can not kill in one move!!!\n",++uo);
}
}
return 0;
}