hdu 2012 A计划 BFS
来源:互联网 发布:java调用scala 编辑:程序博客网 时间:2024/06/16 09:43
思路:
注意坑点,就是两个传送门再两层同个位置,那是不能走的,无限传送!!!!把这里弄成两个墙就好了还有把那个能撞死人的传送门也弄成墙!!!
#include<cstring>#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>#include<queue>#include<vector>using namespace std;#define LL long long#define INF 0x3f3f3f3fchar mp[2][12][12];int vis[2][12][12];int T,n,m,kase;int sz,sx,sy,tz,tx,ty;int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0};struct node{ int z,x,y,t; node(int _z,int _x,int _y,int _t):z(_z),x(_x),y(_y),t(_t){}};int BFS(){ memset(vis,0,sizeof(vis)); node s(sz,sx,sy,0); //s.z=sz;s.x=sx;s.y=sy;s.t=0; queue<node>Q; Q.push(s); while(!Q.empty()){ node t=Q.front(); Q.pop(); int nz=t.z,nx=t.x,ny=t.y,nt=t.t; if(nt>T)return 0; if(nz==tz&&nx==tx&&ny==ty)return 1; vis[nz][nx][ny]=1; for(int i=0;i<4;i++){ int gx=nx+dx[i],gy=ny+dy[i]; if(gx<0||gx>=n||gy<0||gy>=m||vis[nz][gx][gy]||mp[nz][gx][gy]=='*')continue; if(mp[nz][gx][gy]=='#'){ vis[nz][gx][gy]=1; if(vis[!nz][gx][gy])continue; Q.push(node(!nz,gx,gy,nt+1)); } else Q.push(node(nz,gx,gy,nt+1)); } } return 0;}int main(){ scanf("%d",&kase); while(kase--){ scanf("%d%d%d",&n,&m,&T); for(int i=0;i<2;i++){ for(int j=0;j<n;j++){ scanf("%s",mp[i][j]); } } for(int i=0;i<2;i++){ for(int j=0;j<n;j++){ for(int k=0;k<m;k++){ if(mp[i][j][k]=='#'&&(mp[!i][j][k]=='*'||mp[!i][j][k]=='#')){ mp[!i][j][k]=mp[i][j][k]='*'; } if(mp[i][j][k]=='S'){ sz=i;sx=j;sy=k; } if(mp[i][j][k]=='P'){ tz=i;tx=j;ty=k; } } } } if(BFS())printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- hdu 2012 A计划 BFS
- hdu 2012 A计划 双层bfs
- HDU 2102 A计划 BFS
- 【hdu】 A计划 (BFS)
- hdu 2102 A计划 BFS
- HDU 2102 A计划(BFS)
- hdu 2102 A计划 (bfs)
- Hdu 2102 A计划 [Bfs]
- HDU 2102 A计划 BFS
- HDU 2102--A计划【BFS】
- HDU 2102 A计划 BFS
- hdu 2102 A计划(bfs)
- hdu 2102 A计划 BFS
- hdu 2102 A计划(bfs)
- HDU 2102 A计划(BFS)
- hdu 2102 A计划 BFS
- HDU 2102:A计划【bfs】
- hdu A计划 (BFS)
- Socket —— 发送端与接收端通过 io 交互
- Destroying The Graph(最小割+拆点)
- Android异步任务处理框架AsyncTask源码分析
- win10 microsoft edge能上网,别的浏览器不能上网
- 我新的博客开张啦
- hdu 2012 A计划 BFS
- Linux 匿名管道
- Android Studio 编译报错:Manifest merger failed with multiple errors, see logs
- POJ 2492 A Bug's Life .
- 关于 jquery/touchSwipe.js
- HDU3037
- Java的字体类详解(Font)-摘自Java API文档
- oracle初学知识点总结
- FastDFS介绍