题意:给出起点和终点的棋子,不能经过别的棋子,而且转弯的次数不能超过2次,问能否消除

和逃离迷宫一样,每个节点记录下来它的当前的方向和转弯的次数,再搜

注意特判起点的棋子和终点的棋子为0或者不一样的情况,这样的话就不用搜了,直接输出NO

 #include<iostream>
#include<cstdio>
#include<cstring>
#include <cmath>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<algorithm>
using namespace std; typedef long long LL;
const int INF = (<<)-;
const int mod=;
const int maxn=; int g[][];
int turn[][];
int n,m;
int dir[][]={,,-,,,,,-}; struct node{
int x,y;
int turn;
int dir;
}; node st,en; void bfs(){
queue<node> q;
node u;
u.x=st.x;u.y=st.y;u.turn=;u.dir=-;
turn[u.x][u.y]=;
q.push(u); while(!q.empty()){
u=q.front();q.pop(); node v;
for(int i=;i<;i++){
v.x=u.x+dir[i][];
v.y=u.y+dir[i][];
v.turn=u.turn;
v.dir=u.dir; if(u.x==en.x&&u.y==en.y&&u.turn<=){
printf("YES\n");
return;
}
if(v.dir!=i&&v.dir!=-) v.turn++; if(v.x==en.x&&v.y==en.y&&v.turn<=){
printf("YES\n");
return;
} if(v.x<||v.x>n||v.y<||v.y>m||g[v.x][v.y]!=) continue; if(v.turn>) continue; if(v.turn<=turn[v.x][v.y]){
turn[v.x][v.y]=v.turn;
v.dir=i;
q.push(v);
}
}
}
printf("NO\n");
} int main(){
while(scanf("%d %d",&n,&m)!=EOF&&n&&m){
for(int i=;i<=n;i++){
for(int j=;j<=m;j++) cin>>g[i][j];
} int q;
scanf("%d",&q);
while(q--){
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) turn[i][j]=;
scanf("%d %d %d %d",&st.x,&st.y,&en.x,&en.y); if(g[st.x][st.y]!=g[en.x][en.y]||!g[st.x][st.y]||!g[en.x][en.y]) printf("NO\n");
else bfs();
}
}
return ;
}

HDU 1175 连连看【BFS】的更多相关文章

  1. HDU 1175 连连看(超级经典的bfs之一)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others)     ...

  2. hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...

  3. HDU - 1175 连连看 【DFS】【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...

  4. HDU 1175 连连看(BFS)

    连连看 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. HDU 1175 连连看

    连连看 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  6. hdu 1175 连连看 DFS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 解题思路:从出发点开始DFS.出发点与终点中间只能通过0相连,或者直接相连,判断能否找出这样的路 ...

  7. Hdu 1175 连连看(DFS)

    Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175 因为题目只问能不能搜到,没问最少要几个弯才能搜到,所以我采取了DFS. 因为与Hdu ...

  8. HDU 1175 连连看 (深搜+剪枝)

    题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...

  9. hdu 1175 连连看 (深搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...

随机推荐

  1. 洛谷P3358 最长k可重区间集问题(费用流)

    题目描述 对于给定的开区间集合 I 和正整数 k,计算开区间集合 I 的最长 k可重区间集的长度. 输入输出格式 输入格式: 的第 1 行有 2 个正整数 n和 k,分别表示开区间的个数和开区间的可重 ...

  2. P1726 上白泽慧音(0分)

    题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...

  3. (转)Django学习之 第三章:动态Web页面基础

    上一章我们解释了怎样开始一个Django项目和运行Django服务器 当然了,这个站点实际上什么也没有做------除了显示了"It worked"这条信息以外. 这一章我们介绍怎 ...

  4. maridb Error 'Operation DROP USER failed for

    数据库版本:mariadb   10.0.12 主库删除多余的用户名,因从库没有此信息造成主从故障! 报错信息如下:Error 'Operation DROP USER failed for 'use ...

  5. PHP-输入账号密码进入网页

    1. 2. 3. 4.(itcast.html步骤)随便一个本地网页代替即可

  6. unity 模型 材质 贴图 关系;着色器属性

    模型包含 材质(Material),包括 [核心]着色器(Shader) 贴图和其他参数,贴图也算是一种参数 其他,如网格渲染器(Mesh Renderer).动画.坐标 一个材质可以看做为一个Sha ...

  7. Pyhton学习——Day31

    # 服务端和接收端的send和reve没有任何关系,只与协议之间有关系# 应用程序产生的数据一定会交给操作系统,并由操作系统往外发送# 发送端什么时候会清空自己的内存?# 收到接收端的ACK响应以后才 ...

  8. Extjs toolbar 如何添加竖杆分隔符

    如下: { xtype:'button', text:'学生档案', iconCls:'file', handler:function(){ console.log(222) }, }, {xtype ...

  9. python3编写登录接口

    #/usr/bin/env python#yehui'''作业一:博客 作业二:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定'''import getpass, os, pic ...

  10. adb 相关问题总结

    1. adb shell权限问题$ su //root权限来启动adb server$ adb kill-server && adb start-server* daemon not ...