NYOJ 58
#include<stdio.h>
int a[9][9]={
1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,1,0,1,
1,0,0,1,1,0,0,0,1,
1,0,1,0,1,1,0,1,1,
1,0,0,0,0,1,0,0,1,
1,1,0,1,0,1,0,0,1,
1,1,0,1,0,1,0,0,1,
1,1,0,1,0,0,0,0,1,
1,1,1,1,1,1,1,1,1};
int t,x1,x2,y1,y2,m;
int dfs(int x,int y,int s)
{
if(x==x2&&y==y2){if(m>s)m=s;}
else
{
if(!a[x+1][y]) {a[x+1][y]=1;dfs(x+1,y,s+1);a[x+1][y]=0;}
if(!a[x-1][y]) {a[x-1][y]=1;dfs(x-1,y,s+1);a[x-1][y]=0;}
if(!a[x][y+1]) {a[x][y+1]=1;dfs(x,y+1,s+1);a[x][y+1]=0;}
if(!a[x][y-1]) {a[x][y-1]=1;dfs(x,y-1,s+1);a[x][y-1]=0;}
}
}
int main()
{
int s;
scanf("%d",&t);
while(t--)
{
m=81;s=0;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
dfs(x1,y1,s);
printf("%d\n",m);
}
return 0;
}