链接: link.
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string.h>
using namespace std;
char Map[15][15];
int vis[15][15];
int cnt;
int d[][2] = {0,1,0,-1,1,0,-1,0};
void DFS(int x,int y)
{
for(int i=0; i<4; i++)
{
int xx = x+d[i][0];
int yy = y+d[i][1];
if(xx>=0&&xx<9&&yy>=0&&yy<9&&Map[xx][yy]=='.'&&!vis[xx][yy])
{
vis[xx][yy] = 1;
cnt++;
}
}
for(int i=0; i<4; i++)
{
int xx = x+d[i][0];
int yy = y+d[i][1];
if(xx>=0&&xx<9&&yy>=0&&yy<9&&Map[xx][yy]=='o'&&!vis[xx][yy])
{
vis[xx][yy] = 1;
DFS(xx,yy);
}
}
}
int main()
{
int t,i,j,k=1,flag;
scanf("%d",&t);
while(t--)
{
for(i=0; i<9; ++i)
{
scanf("%s",Map[i]);
}
flag=0;
memset(vis,0,sizeof(vis));
for(i=0; i<9; ++i)
{
for(j=0; j<9; ++j)
{
if(Map[i][j]=='o'&&!vis[i][j])
{
cnt=0;
memset(vis,0,sizeof(vis));
vis[i][j]=1;
DFS(i,j);
if(cnt==1)
{
flag=1;
break;
}
}
}
if(flag)
break;
}
if(flag)
{
printf("Case #%d: Can kill in one move!!!\n",k++);
}
else
{
printf("Case #%d: Can not kill in one move!!!\n",k++);
}
}
return 0;
}