标签:
优先队列bfs,无难度,走x不用花时间,走“.”时间为1;
#include<iostream> #include<queue> #include<cstring> #define maxn 1000+5 using namespace std; char mapp[maxn][maxn]; int visit[maxn][maxn]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int n,m; int sx,sy,ex,ey; struct stu { int x,y; int t; friend bool operator<(stu x,stu y) { return x.t>y.t; } }; void bfs() { stu x,y; priority_queue<stu>root; x.x=sx; x.y=sy; x.t=0; root.push(x); visit[sx][sy]=1; while(root.size()) { x=root.top(); root.pop(); if(x.x==ex&&x.y==ey) { cout<<x.t<<endl;return; } for(int i=0;i<4;i++) { y.x=x.x+dir[i][0]; y.y=x.y+dir[i][1]; if(y.x<0||y.x>=n||y.y<0||y.y>=m||visit[y.x][y.y]){continue;} if(mapp[y.x][y.y]=='X') y.t=x.t; else y.t=x.t+1; root.push(y); visit[y.x][y.y]=1; } } } int main() { while(cin>>n>>m&&n&&m) { for(int i=0;i<n;i++) cin>>mapp[i]; cin>>sx>>sy>>ex>>ey; sx--;sy--;ex--;ey--; memset(visit,0,sizeof(visit)); bfs(); } return 0; }
标签:
原文地址:http://blog.csdn.net/zafkiel_nightmare/article/details/45225775