今天太乏了= =
这么乱的风格也只有我写的出来吧
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<queue> #include<stack> #define mem(a,b) memset(a,b,sizeof(a)) #define ll __int64 #define MAXN 1000 #define INF 0x7ffffff #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 using namespace std; struct M{ int x,y; int fax,fay,flag; }; struct Road { int x,y; }; int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; M map[10][10]; Road r[50]; void bfs() { int i,j; M now,next; queue<M> q; map[1][1].flag=1; q.push(map[1][1]); while(!q.empty()) { now=q.front(); q.pop(); if(now.x==5&&now.y==5) { int cnt=0; int fx=now.x,fy=now.y; while(1) { if(fx==0&&fy==0) break; r[cnt].x=map[fx][fy].x; r[cnt].y=map[fx][fy].y; cnt++; int tx=fx,ty=fy; fx=map[tx][ty].fax; fy=map[tx][ty].fay; } for(int i=cnt-1;i>=0;i--) { printf("(%d, %d)\n",r[i].x-1,r[i].y-1); } return ; } for(i=0;i<4;i++) { int x=now.x+dir[i][0]; int y=now.y+dir[i][1]; if(map[x][y].flag==0) { next.x=x; next.y=y; map[x][y].fax=now.x; map[x][y].fay=now.y; map[x][y].flag=1; q.push(next); } } } } int main() { mem(map,-1); int i,j; for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { scanf("%d",&map[i][j].flag); map[i][j].x=i; map[i][j].y=j; } } map[1][1].fax=0; map[1][1].fay=0; bfs(); return 0; }
原文:http://www.cnblogs.com/sola1994/p/3915917.html