首页 > 代码库 > hdu 1242
hdu 1242
#include<iostream>#include<string>#include<queue>#include<stdio.h>using namespace std;struct point{ int x,y,step;}p;string map[211];int used[211][211];int f[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};int n,m;queue<point> q;int bfs(){ int step = 0,i,l = 1,t = 0,t0 = 0; point p1; while(!q.empty()) { t++; p = q.front(); q.pop(); if(p.step > step) { q.push(p);t0++;} else{ for(i = 0; i < 4; i++) { p1.x = p.x + f[i][0]; p1.y = p.y + f[i][1]; if(p1.x >=0&&p1.x<n&&p1.y>=0&&p1.y<m&&map[p1.x][p1.y] != ‘#‘) { if(map[p1.x][p1.y] == ‘.‘) p1.step = p.step+1; else if(map[p1.x][p1.y] == ‘x‘) p1.step = p.step + 2; else { // cout<<p.x<<‘ ‘<<p.y<<‘ ‘<<p.step<<endl; // cout<<p1.x<<‘ ‘<<p1.y<<‘ ‘<<p1.step<<endl; // cout<<map[p1.x][p1.y]<<endl; return p.step+1; } map[p1.x][p1.y] = ‘#‘; q.push(p1);t0++; } } } if(l == t) { l = t0; t0 = 0;t = 0; step++; // cout<<l<<endl; } // step++; // cout<<step<<endl; } return -1;}int main(){ while(cin>>n>>m) { // memset(used,0,sizeof(map)); int i,j; getchar(); for(i = 0; i < n; ++i){ cin>>map[i]; if(!q.empty())continue; for(j = 0; j < m; ++j){ if(map[i][j] == ‘r‘) { map[i][j] = ‘#‘; p.x = i;p.y = j;p.step = 0; q.push(p);break; } } } int total = bfs(); if(total == -1) cout<<"Poor ANGEL has to stay in the prison all his life."<<endl; else cout<<total<<endl; while(!q.empty()) { q.pop(); } // for(i = 0; i < n; ++i) // cout<<s[i]<<endl; } return 0;}/*7 8 #.#####. #.a#..r. #..#x... ..#xx#.# #...##.. .#...... ........ */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。