标签:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <stack> #include <queue> using namespace std; int w[10][10],ww[10][10]; int aa[10][10]; int a[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; struct node { int x,y,s; }; void qq() { memset(w,0,sizeof(w)); queue<node> Q; node q,p; q.x=q.y=q.s=0; w[0][0]=1; Q.push(q); while(Q.size()) { p=Q.front();Q.pop(); for(int i=0;i<4;i++) { q.x=p.x+a[i][0]; q.y=p.y+a[i][1]; q.s=p.s+1; if(q.x>=0&&q.x<5&&q.y>=0&&q.y<5&&!w[q.x][q.y]&&!aa[q.x][q.y]) { Q.push(q); ww[q.x][q.y]=q.s; w[q.x][q.y]=1; } } } } void bfs(int e,int f) { if(e==0&&f==0) { printf("(0, 0)\n"); return ; } for(int i=0;i<4;i++) { int x=e+a[i][0]; int y=f+a[i][1]; if(x>=0&&x<5&&y>=0&&y<5&&ww[e][f]==ww[x][y]+1&&!aa[x][y]) { bfs(x,y); printf("(%d, %d)\n",e,f); } } } int main() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) scanf("%d",&aa[i][j]); qq(); bfs(4,4); return 0; }
http://poj.org/problem?id=3984
标签:
原文地址:http://www.cnblogs.com/a719525932/p/5667798.html