HDU1175连连看 BFS
来源:互联网 发布:怎么加盟农村淘宝店 编辑:程序博客网 时间:2024/05/16 19:36
没啥困难的,bfs模板题,注意一下剪枝
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <climits>#include <string>#include <iostream>#include <cstdlib>#include <list>#include <set>#include <queue>#include <stack>using namespace std;#define maxn 1010int map[maxn][maxn];int vis[maxn][maxn];int n,m;int d[4][2]={0,1,1,0,0,-1,-1,0};struct point{ int x,y; int num; int dir;}s,e;bool bfs(){ queue<point>q; vis[s.x][s.y]=0; s.num=-1; s.dir=-1; q.push(s); while(!q.empty()) { point u=q.front(); q.pop(); if(u.x==e.x&&u.y==e.y&&u.num<=2) return 1; for(int i=0;i<4;i++) { point tmp; tmp.x=u.x+d[i][0]; tmp.y=u.y+d[i][1]; tmp.dir=i; tmp.num=u.num; if(tmp.x>=1&&tmp.x<=n&&tmp.y>=1&&tmp.y<=m&&(map[tmp.x][tmp.y]==0||tmp.x==e.x&&tmp.y==e.y)) { if(tmp.dir!=u.dir) { tmp.num=u.num+1; if(tmp.num>2) continue; if(vis[tmp.x][tmp.y]>=tmp.num) { vis[tmp.x][tmp.y]=tmp.num; q.push(tmp); } } else { if(vis[tmp.x][tmp.y]>=tmp.num) { vis[tmp.x][tmp.y]=tmp.num; q.push(tmp); } } } } } return 0;}int main(){ int t,x1,x2,y1,y2; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&map[i][j]); } } scanf("%d",&t); while(t--) { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { vis[i][j]=4; } } scanf("%d%d%d%d",&s.x,&s.y,&e.x,&e.y); if(map[s.x][s.y]!=map[e.x][e.y]||map[s.x][s.y]==0||map[e.x][e.y]==0) printf("NO\n"); else if(bfs()) printf("YES\n"); else printf("NO\n"); } } return 0;}
0 0
- hdu1175- 连连看BFS
- HDU1175连连看 BFS
- hdu1175连连看(BFS)
- hdu1175-连连看(简单bfs)
- HDU1175 连连看(bfs)
- 第一个bfs题目 hdu1175连连看
- hdu1175 连连看 (BFS+优先队列)
- hdu1175连连看
- hdu1175 连连看
- hdu1175连连看
- hdu1175 连连看
- hdu1175 连连看
- hdu1175(连连看)
- hdu1175连连看
- HDU1175连连看
- HDU1175 连连看 DFS
- ACM hdu1175 连连看
- HDU1175:连连看(DFS)
- XCode 使用技巧整理
- Java(三)--容器
- mysqldump 导出、导入数据
- Qt静态编译教程(完整版)
- JPA联合主键的使用
- HDU1175连连看 BFS
- 给wxPython事件处理函数传递参数
- 操作系统
- 常用排序算法稳定性分析
- 系统设计
- 概率统计
- C++学习笔记23 初始化列表
- 智力逻辑
- Linux命令之wc