#include<stdio.h>
#include<string.h>
#define M 105
int Board[M][M];
int R,C,X,Y,next[8][2],A[8],B[8];
void DFS(int,int);
int main()
{
int t,i,k,m,n,x,y,w;
//freopen("in.txt","r",stdin);
scanf("%d",&t);
for(k=1;k<=t;k++)
{
scanf("%d%d%d%d",&R,&C,&m,&n);
next[0][0] = -n; next[0][1] = m;
next[1][0] = -m; next[1][1] = n;
next[2][0] = -m; next[2][1] = -n;
next[3][0] = -n; next[3][1] = -m;
next[4][0] = n; next[4][1] = -m;
next[5][0] = m; next[5][1] = -n;
next[6][0] = m; next[6][1] = n;
next[7][0] = n; next[7][1] = m;
memset(Board,0,sizeof(Board));
scanf("%d",&w);
for(i=0;i<w;i++)
{
scanf("%d%d",&x,&y);
Board[x][y] = -1;
}
X = Y = x = y = 0;
DFS(x,y);
printf("Case %d: %d %d\n",k,X,Y);
memset(Board,0,sizeof(Board));
}
return 0;
}
void DFS(int x,int y)
{
int nx,ny,tx,ty,i,j,flag,t=0;
Board[x][y]= 1;
for(i=0; i<8; i++)
{
nx = x + next[i][0];
ny = y + next[i][1];
if(nx>=0 && nx<R && ny>=0 && ny<C && Board[nx][ny]!=-1)
{
flag = 0;
for(j=0; j<i; j++)
{
tx = x + next[j][0];
ty = y + next[j][1];
if(tx==nx && ty==ny)
{
flag = 1; break;
}
}
if(!flag)t++;
if(Board[nx][ny]==0)
DFS(nx,ny);
}
}
if(t&1)
Y++;
else
X++;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.