啊,无语死了。。。不是丢这就是少那。。。手生,手生~!+_++_+
#include<iostream>
using namespace std;
int m,n;
int map[20][20];
struct node
{
int row;
int col;
}q[100];
int start=0,f;
void push(int r,int c)
{
q[start].row=r;
q[start++].col=c;
}
void pop(int &r,int &c)
{
r=q[--start].row;
c=q[start].col;
}
void bfs(int a,int b,int c,int d)
{
bool sign[9][9]={false};
int count[100]={0};
bool flag=false;
start=0;
push(a,b);
sign[a][b]=true;
int row,col;
int x;
while(start)
{
f=count[start-1];
pop(row,col);
if(row==c&&col==d)
{
flag=true;
break;
}
x=row+1;
if(map[x][col]==0&&!sign[x][col]&&x<m)
{
count[start]=f+1;
push(x,col);
sign[x][col]=true;
}
x=row-1;
if(map[x][col]==0&&!sign[x][col]&&x>=0)
{
count[start]=f+1;
push(x,col);
sign[x][col]=true;
}
x=col+1;
if(map[row][x]==0&&!sign[row][x]&&x<n)
{
count[start]=f+1;
push(row,x);
sign[row][x]=true;
}
x=col-1;
if(map[row][x]==0&&!sign[row][x]&&x>=0)
{
count[start]=f+1;
push(row,x);
sign[row][x]=true;
}
}
printf("%d\n",f);
}
int main()
{
int t,x1,y1,x2,y2;
int m,n;
scanf("%d",&t);
while(n--)
{
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
scanf("%d",&map[i][j]);
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
bfs(x1,y1,x2,y2);
}
return 0;
}