hdu 1242 Rescue
2015-03-28 23:26
211 查看
深搜不解释,要注意公主的朋友不只一个,然后测试数据有多组
#include<iostream> #include<cstring> using namespace std; int n,m; int ax,ay; int re=1<<30; char mapp[200+5][200+5]; int visit[200+5][200+5]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; void dfs(int x,int y,int t) { visit[x][y]=1; if(mapp[x][y]=='r'){re=min(re,t);return;} for(int i=0;i<4;i++) { int xx,yy; xx=x+dir[i][0];yy=y+dir[i][1]; if(xx<0||xx>=n||yy<0||yy>=m||visit[xx][yy]||mapp[xx][yy]=='#') {continue;} if(mapp[xx][yy]=='.') dfs(xx,yy,t+1),visit[xx][yy]=0; else if(mapp[xx][yy]=='x') dfs(xx,yy,t+2),visit[xx][yy]=0; else if(mapp[xx][yy]=='r') dfs(xx,yy,t+1),visit[xx][yy]=0; } visit[x][y]=0; } int main() { while(cin>>n>>m) { re=1<<30; memset(visit,0,sizeof(visit)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>mapp[i][j]; if(mapp[i][j]=='a') ax=i,ay=j; } } dfs(ax,ay,0); if(re!=(1<<30)) cout<<re<<endl; else cout<<"Poor ANGEL has to stay in the prison all his life."<<endl; } return 0; }
相关文章推荐
- hdu Rescue 1242
- hdu 1242 Rescue(bfs+优先队列)
- HDU 1242 Rescue(BFS+【优先队列】)
- HDU-1242-Rescue
- hdu 杭电 1242 Rescue
- ZOJ 1649 Rescue (HDU 1242)
- HDU 1242 Rescue
- HDU 1242 Rescue【优先队列BFS】
- HDU 1242 rescue and 优先级队列的条目
- HDU 1242-Rescue
- hdu 1242 Rescue(优先队列)
- HDU 1242 Rescue
- hdu1242 Rescue--BFS
- hdu 1242 Rescue(BFS,优先队列,基础)
- HDU 1242 Rescue(BFS+优先队列)
- HDU1242 Rescue(优先队列加BFS)
- 广度优先搜索nodeHDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
- hdu 1242 Rescue(广搜+优先队列)
- hdu 1242 Rescue(BFS+优先队列)
- hdu 1242 Rescue