Dungeon Master POJ
来源:互联网 发布:java 互斥锁 编辑:程序博客网 时间:2024/05/18 20:10
邝斌系列
最短路模板题
看样例就懂了:
3 4 5S.....###..##..###.#############.####...###########.#######E1 3 3S###E####0 0 0
多加两个方向,向上和向下即可。
#include <string>#include <cstring>#include <cmath>#include <algorithm>#include <cstdio>#include <queue>#include <iostream>using namespace std;typedef long long ll;typedef pair <int,int> pii;#define mem(s,t) memset(s,t,sizeof(s))#define D(v) cout<<#v<<" "<<v<<endl#define inf 0x3f3f3f3f#define pb push_back//#define LOCALconst int mod=1e9+7;const int MAXN =500+10;int l,r,c;int dx[]={0,0,1,-1,0,0};int dy[]={0,0,0,0,-1,1};int dz[]={1,-1,0,0,0,0};char m[50][50][50];int vis[50][50][50];struct node{ int x,y,z,ret; bool operator == (const node& a){ return a.x==x && a.y==y && a.z==z; }};queue<node> que;node s,t;int bfs(){ que.push(s); vis[s.x][s.y][s.z]=1; while(!que.empty()){ node a=que.front(); //D(a.ret); que.pop(); if(a.x==t.x && a.y==t.y && a.z==t.z) return a.ret; for(int i=0;i<6;i++){ node temp; temp.x=a.x+dx[i]; temp.y=a.y+dy[i]; temp.z=a.z+dz[i]; temp.ret=a.ret+1; if(temp.x<l && temp.x>=0 && temp.y>=0 && temp.y<r && temp.z<c && temp.z>=0 && m[temp.x][temp.y][temp.z]!='#' && !vis[temp.x][temp.y][temp.z]){ que.push(temp); vis[temp.x][temp.y][temp.z]=1; } } } return -1;}int main() { while(~scanf("%d%d%d",&l,&r,&c) && l+r+c){ mem(vis,0); while(!que.empty()) que.pop(); for(int i=0;i<l;i++){ for(int j=0;j<r;j++){ scanf("%s",m[i][j]); for(int k=0;k<c;k++){ if(m[i][j][k]=='S') s.x=i,s.y=j,s.z=k,s.ret=0; else if(m[i][j][k]=='E') t.x=i,t.y=j,t.z=k,t.ret=0; } } } int ans=bfs(); if(ans==-1){ puts("Trapped!"); }else printf("Escaped in %d minute(s).\n",ans); } return 0;}
阅读全文
0 0
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- Poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- POJ 2251 Dungeon Master
- POJ-2251-Dungeon Master
- POJ 2251Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- poj 2251 Dungeon Master
- POJ 2251 - Dungeon Master
- POJ 2251 Dungeon Master
- POJ 2251 Dungeon Master
- POJ-2251-Dungeon Master
- poj 2251 Dungeon Master
- Android 开发之lombok--- 让java实体类更简洁
- vba变量命名惯例
- QListView的item去掉选中时的虚线、更改鼠标悬浮与选中时背景样式
- 交换两个变量的值
- d-left和cuckoo hash
- Dungeon Master POJ
- JavaScript的BOM对象
- Git的安装与配置
- virtual memory exhausted: Cannot allocate memory
- udp buffer 和reassemble buffer
- 一个Java小白面试得力集团的收获总结
- 51单片机中断系统(定时器、计数器)
- MyBatis动态sql之${}和#{}区别
- webpack配置react-hot-loader热加载局部更新