坑人的迷宫

来源:互联网 发布:西宁知秋凤凰经理 编辑:程序博客网 时间:2024/05/17 08:11
啊,无语死了。。。不是丢这就是少那。。。手生,手生~!+_++_+
#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;}