hdu 2102 A计划

来源:互联网 发布:广州哪里有plc编程培训 编辑:程序博客网 时间:2024/05/28 15:54

果然好久不刷题实力会退步啊,如此水的一道题都写了半小时。

#include<iostream>#include<cmath>#include<queue>#include<cstring>using namespace std;int n,m,lim;struct stu{int x,y,z,t;};char mapp[2][10][10];int visit[2][10][10];int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int flag;void bfs(){memset(visit,0,sizeof(visit));stu x,y;queue<stu>root;x.x=x.y=x.z=x.t=0;root.push(x);visit[0][0][0]=1;while(root.size()){//cout<<x.z<<"~"<<x.x<<"~"<<x.y<<"~"<<x.t<<endl;x=root.front();root.pop();if(mapp[x.z][x.x][x.y]=='P'){//cout<<x.z<<"~"<<x.x<<"~"<<x.y<<"~"<<x.t<<endl;if(x.t<=lim) flag=1;return;}for(int i=0;i<4;i++){y.x=x.x+dir[i][0];y.y=x.y+dir[i][1];y.z=x.z;y.t=x.t+1;if(y.x<0||y.x>=n||y.y<0||y.y>=m||visit[y.z][y.x][y.y]||mapp[y.z][y.x][y.y]=='*') continue;if(mapp[y.z][y.x][y.y]=='#'){int p=abs(y.z-1);if(mapp[p][y.x][y.y]!='*'&&!visit[p][y.x][y.y]&&mapp[p][y.x][y.y]!='#'){y.z=p;}else continue;}root.push(y);visit[y.z][y.x][y.y]=1; }}}int main(){cin.sync_with_stdio(false);int t;cin>>t;while(t--){flag=0;cin>>n>>m>>lim;for(int k=0;k<2;k++){for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>mapp[k][i][j];}}}//读图///cout<<mapp[1][0][4]<<endl;bfs(); if(flag) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;}


0 0
原创粉丝点击