hdu 1253 ( 胜利大逃亡 )
2011-03-23 21:23
302 查看
http://acm.hdu.edu.cn/problemclass.php?id=268
View Code
View Code
Problem : 1253 ( 胜利大逃亡 ) Judge Status : Accepted 自我感觉BFS难度1可以告一段落了。 思路: 这题和一般的BFS的做法是一样的m[k][i][j]=1表示第k块第i行第j列是墙, #include<iostream> #include<stdio.h> #include<queue> #include<algorithm> using namespace std; int m[51][51][51],vis[51][51][51]; int a,b,c,t,ans; int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; struct node { int x,y,z,dis; node(int _x=0,int _y=0,int _z=0,int _dis=0):x(_x),y(_y),z(_z),dis(_dis){}; }; void BFS() { queue <node> q; q.push(node(0,0,0,0)); vis[0][0][0]=1; ans=-1; while(!q.empty()) { node tt=q.front(); q.pop(); for(int k=0;k<6;k++) { int x=tt.x+dir[k][0]; int y=tt.y+dir[k][1]; int z=tt.z+dir[k][2]; if(x>=0&&x<a&&y>=0&&y<b&&z>=0&&z<c&&!vis[x][y][z]&&m[x][y][z]==0) { vis[x][y][z]=1; q.push(node(x,y,z,tt.dis+1)); if(x==a-1&&y==b-1&&z==c-1) { if(tt.dis+1<=t)ans=tt.dis+1; return; } } } } } int main() { int cas; scanf("%d",&cas); while(cas--) { memset(vis,0,sizeof(vis)); memset(m,0,sizeof(m)); scanf("%d%d%d%d",&a,&b,&c,&t); for(int k=0;k<a;k++) for(int i=0;i<b;i++) for(int j=0;j<c;j++) scanf("%d",&m[k][i][j]); BFS(); printf("%d\n",ans); } }
相关文章推荐
- hdu-1253 胜利大逃亡(BFS)
- HDU 1253 胜利大逃亡
- HDOJ 1253 HDU 1253 胜利大逃亡 ACM 1253 IN HDU
- HDU 1253 胜利大逃亡( BFS )
- hdu 1253 胜利大逃亡
- bfs广搜 胜利大逃亡 HDU - 1253
- hdu1253 胜利大逃亡(BFS)
- hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
- HDU 1253 胜利大逃亡
- hdu 1253 胜利大逃亡(搜索)
- HDU 1253 胜利大逃亡(空间BFS)
- hdu 1253 胜利大逃亡
- hdu-1253-胜利大逃亡
- HDU 1253 胜利大逃亡
- HDU-1253 胜利大逃亡(简单三维广搜BFS)
- hdu 1253 胜利大逃亡(BFS,三维)
- HDU 1253 胜利大逃亡
- HDU 1253 胜利大逃亡(BFS)
- HDU-1253 胜利大逃亡 (BFS)