HDU-2102 A计划
来源:互联网 发布:mysql 触发器 性能 编辑:程序博客网 时间:2024/05/23 12:04
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=2102题意:
从S搜索到E有两张图,#处可以转换到另一张图,求是否能在T时间内走到。
思路:
就是基础的搜图,只是加了个两张图之间跳转罢了。代码:
#define N 112int n,m;int flag,sum,ave,ans,res,len,ans1,ans2;int g[2][N][N],dir[4][2]={1,0,-1,0,0,1,0,-1};char s[101];struct node{ int x,y,z,step;}tn,e;bool bfs(){ queue<node>q; while(!q.empty())q.pop(); node a,b; tn.step=0; q.push(tn); while(!q.empty()) { a=q.front();q.pop(); if(a.x==e.x&&a.y==e.y&&a.z==e.z) return true; if(a.step==sum)continue; for(int i=0;i<4;i++) { b=a;b.x+=dir[i][0];b.y+=dir[i][1];b.step++; if(g[b.z][b.x][b.y]==2)b.z^=1; if(g[b.z][b.x][b.y]==1) { g[b.z][b.x][b.y]=0; q.push(b); } } } return false;}int main(){ int i,j,k,kk,t,x,y,z; scanf("%d",&kk); while(kk--) { scanf("%d%d%d",&n,&m,&sum); memset(g,0,sizeof(g)); for(k=0;k<2;k++) for(i=0;i<n;i++) { scanf("%s",s); for(j=0;j<m;j++) { if(s[j]=='*')continue; if(s[j]=='S') tn.x=i+1,tn.y=j+1,tn.z=k; g[k][i+1][j+1]=1; if(s[j]=='P') e.x=i+1,e.y=j+1,e.z=k; if(s[j]=='#') g[k][i+1][j+1]=2; } } printf("%s\n",bfs()?"YES":"NO"); } return 0;}
0 0
- hdu 2102 A计划
- HDU-2102-A计划
- HDU 2102 A计划
- HDU 2102 A计划
- HDU 2102 A计划
- hdu 2102 A计划
- hdu 2102 A计划
- hdu 2102 A计划
- hdu 2102 A计划
- hdu(2102) A计划
- hdu 2102 A计划
- HDU 2102 A计划
- HDU 2102 A计划
- HDU 2102 A计划
- HDU 2102A计划
- HDU 2102 A计划
- hdu 2102 A计划
- HDU 2102 A计划
- leetcode笔记:Merge Two Sorted Lists
- 黑马程序员————java实现插入排序,附其改进--二分检索的插入排序
- C语言程序初体验-第十一课-第一题:分离各位数
- 记录,学习,分享
- java面试题二十 try catch
- HDU-2102 A计划
- adduser和useradd的区别
- 完全二叉树插入
- struts2修改默认后缀
- STL中map用法详解
- 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
- 代码审查的5点经验教训总结
- HDU-3001 Travelling
- 数据结构 尾插法