HDU 1175 连连看
来源:互联网 发布:推广淘宝 编辑:程序博客网 时间:2024/05/18 02:29
最近做题都是上百ms的节奏。。。
bfs暴搜。
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<vector>#include<queue>using namespace std;const int maxN=1010;const int inf=1010;struct Point{ int turn[5],val;}p[maxN][maxN];int x1,y1,x2,y2,dx[]={-1,1,0,0},dy[]={0,0,-1,1},n,m;bool bfs(){ queue<int> q; for(int i=0;i<4;++i){ int nx=x1+dx[i],ny=y1+dy[i]; if(nx==x2&&ny==y2) return true; if(nx>=0&&nx<n&&ny<m&&ny>=0&&p[nx][ny].val==0){ q.push(nx*m+ny); p[nx][ny].turn[i]=0; } } while(!q.empty()){ int u=q.front();q.pop(); int x=u/m,y=u%m; if(x==x2&&y==y2) return true; for(int i=0;i<4;++i){ int nx=x+dx[i],ny=y+dy[i]; if(nx==x2&&y2==ny) for(int j=0;j<4;++j) if(i==j){ if(p[x][y].turn[j]<=2) return true; } else{ if(p[x][y].turn[j]<2) return true; } if(nx>=0&&nx<n&&ny<m&&ny>=0&&p[nx][ny].val==0){ int kx=-1,ky=-1; for(int j=0;j<4;++j){ if(i==j){ if(p[nx][ny].turn[i]>p[x][y].turn[j]){ kx=nx;ky=ny; p[nx][ny].turn[i]=p[x][y].turn[j]; } } else{ if(p[x][y].turn[j]<2&&p[nx][ny].turn[i]>p[x][y].turn[j]+1){ kx=nx;ky=ny; p[nx][ny].turn[i]=p[x][y].turn[j]+1; } } } if(kx!=-1&&ky!=-1) q.push(kx*m+ky); } } } return false;}int main(){#ifndef ONLINE_JUDGE freopen("a.in","r",stdin); //freopen("a.out","w",stdout);#endif while(cin>>n>>m,n||m){ for(int i=0;i<n;++i) for(int j=0;j<m;++j) cin>>p[i][j].val; int q; cin>>q; while(q--){ cin>>x1>>y1>>x2>>y2; x1--;y1--;x2--;y2--; if(p[x1][y1].val!=p[x2][y2].val||(p[x1][y1].val==0&&p[x2][y2].val==0)){ puts("NO"); continue; } for(int i=0;i<n;++i) for(int j=0;j<m;++j) for(int k=0;k<4;++k) p[i][j].turn[k]=inf; if(bfs()) puts("YES"); else puts("NO"); } } return 0;}
- hdu 1175 连连看
- hdu 1175 连连看
- hdu 1175 连连看
- HDU 1175 连连看
- HDU 1175 ( 连连看 )
- hdu 连连看 1175
- hdu 1175 连连看
- hdu 1175连连看
- HDU 1175 连连看
- hdu 1175 连连看
- HDU 1175 连连看
- HDU 1175 连连看
- HDU 1175 连连看
- HDU 1175 连连看
- hdu 1175 连连看
- hdu 1175 连连看
- HDU-1175 连连看
- HDU 1175 连连看
- 关于ob_start()
- 记某逊的Online Test
- 多进程浏览器开发mark
- 江西宜春三名公务员擅自驾公车钓鱼被通报-公车钓鱼-公务员-公车
- C++与C#对比学习:函数(二)返回值,默认实参.this指针
- HDU 1175 连连看
- 第一课 建立我的第一个安卓程序(not hello world !)
- android Mms代码结构
- Python中glob模块常用函数
- 无标题栏窗口拖动的实现
- 我国延长对进口氨纶反倾销措施实施期限-商务部-进口氨纶-反倾销措施
- px,dp,dip,sp,in,mm,pt详细分析
- VitualBox安装CENTOS图文教程(1)——创建虚拟机
- HDU 1283 最简单的计算机