hdu 2822 Dogs

来源:互联网 发布:ubuntu如何安装win10 编辑:程序博客网 时间:2024/05/29 19:04

优先队列bfs,无难度,走x不用花时间,走“.”时间为1;

#include<iostream>#include<queue>#include<cstring>#define  maxn 1000+5using 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;} 


0 0
原创粉丝点击