HDU1180 诡异的楼梯
来源:互联网 发布:淘宝网警用手铐脚铐 编辑:程序博客网 时间:2024/05/17 00:10
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<string>using namespace std;const int INF=0x3f3f3f3f;const int MAXN=25;const int MAXM=25;int n,m,i,j,T;int done[MAXN][MAXM];int sx,sy,ex,ey;char map[MAXN][MAXM];int dx[]={0,0,1,-1};//右左下上int dy[]={1,-1,0,0};int en,p[MAXN][MAXM];struct node{int x,y,t;node(int xx=0,int yy=0,int tt=0){x=xx;y=yy;t=tt;}friend operator<(const node &a,const node &b){return a.t>b.t;}};bool is_ill(int x,int y){if(x<0||x>=n||y<0||y>=m)return 1;if(map[x][y]=='*'||done[x][y])return 1;return 0;}int bfs() { priority_queue<node>q; memset(done,0,sizeof(done)); q.push(node(sx,sy,0)); done[sx][sy]=1; while(!q.empty()) { node e=q.top();q.pop(); for(i=0;i<4;i++) { if(map[e.x][e.y]=='-'&&e.t%2==0&&(i==2||i==3))continue;if(map[e.x][e.y]=='-'&&e.t%2==1&&(i==0||i==1))continue;if(map[e.x][e.y]=='|'&&e.t%2==0&&(i==0||i==1))continue;if(map[e.x][e.y]=='|'&&e.t%2==1&&(i==2||i==3))continue; int curx=e.x+dx[i]; int cury=e.y+dy[i]; int curt=e.t+1;if(is_ill(curx,cury))continue; if(map[curx][cury]=='-'){if(e.t%2==0&&(i==2||i==3))q.push(node(curx,cury,curt));else if (e.t%2==1&&(i==0||i==1))q.push(node(curx,cury,curt));else q.push(node(curx,cury,curt-1));continue;}if(map[curx][cury]=='|'){if(e.t%2==1&&(i==2||i==3))q.push(node(curx,cury,curt));else if (e.t%2==0&&(i==0||i==1))q.push(node(curx,cury,curt));else q.push(node(curx,cury,curt-1));continue;}if(curx==ex&&cury==ey) return curt;done[curx][cury]=1;q.push(node(curx,cury,curt)); } } return -1; } int main(){//freopen("123.txt","r",stdin);while(~scanf("%d%d",&n,&m)){gets(map[0]);for(i=0;i<n;i++)gets(map[i]);for(i=0;i<n;i++)for(j=0;j<m;j++){if(map[i][j]=='S'){sx=i;sy=j;map[i][j]='.';}if(map[i][j]=='T'){ex=i;ey=j;map[i][j]='.';}}int ans=bfs();printf("%d\n",ans);}return 0;}
0 0
- hdu1180 诡异的楼梯
- HDU1180 诡异的楼梯
- hdu1180 诡异的楼梯
- hdu1180诡异的楼梯
- HDU1180 诡异的楼梯
- HDU1180-诡异的楼梯
- HDU1180 诡异的楼梯--BFS
- hdu1180诡异的楼梯 bfs
- hdu1180诡异的楼梯(bfs)
- HDU1180 诡异的楼梯[dfs]
- hdu1180 诡异的楼梯--BFS
- HDU1180-诡异的楼梯(bfs)
- HDU1180 诡异的楼梯(BFS)
- hdu1180——诡异的楼梯
- hdu1180诡异的楼梯(BFS+优先队列)
- hdu1180诡异的楼梯(广搜)
- Hdu1180 - 诡异的楼梯 - 广度优先搜索
- 【搜索-BFS】HDU1180诡异的楼梯
- 百度编辑器ueditor的简单使用
- File
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- java与c#使用Socket实现局域网聊天
- 程序猿笑话,放松一下
- HDU1180 诡异的楼梯
- IO功能类
- iOS学习之Table View的简单使用
- colinux的安装与网络配置
- 牛奶加热应注意什么
- Perl script 扫描指定文件夹replace string
- c++ 使用socket实现C/S端文件的下载传输
- 数据、信息、知识、智慧的定义区别
- 攘峡檀也匪截椒期泄第匪怀痰纹醒