hdu 1175 连连看
来源:互联网 发布:电信网络诈骗类型 编辑:程序博客网 时间:2024/05/22 05:13
不知道为什么不用flag直接返回bfs的结果会错,被坑了好久。
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>using namespace std;struct node{ int x,y,s,d;} t,t0;int n,m,mp[1024][1024],vis[1024][1024];int x,y,x2,y2,flag;int dx[4]= {0,0,1,-1},dy[4]= {1,-1,0,0};void bfs(){ queue<node>q; if(x==x2&&y==y2) return ; if(mp[x][y]==0||mp[x2][y2]==0) return ; if(mp[x][y]!=mp[x2][y2]) return ; memset(vis,5,sizeof(vis)); t.x=x; t.y=y; t.s=0; t.d=-1; q.push(t); while(!q.empty()) { t0=q.front(); //printf("%d %d %d\n",t0.x,t0.y,t0.s); q.pop(); if(t0.x==x2&&t0.y==y2&&t0.s<=2) {flag=1;return ;} for(int i=0; i<4; i++) { t=t0; t.x+=dx[i]; t.y+=dy[i]; if(t.x<1||t.x>n||t.y<1||t.y>m) continue; if(mp[t.x][t.y]==0||(t.x==x2&&t.y==y2)) { t.d=i; if(i!=t0.d&&-1!=t0.d) t.s++; if(t.s>=3) continue; if(t.s<vis[t.x][t.y]) { q.push(t); vis[t.x][t.y]=t.s; } } } } //return;}int main(){ while(~scanf(" %d %d",&n,&m)) { if(n==0||m==0) break; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d",&mp[i][j]); int T; scanf("%d",&T); while(T--) { scanf("%d %d %d %d",&x,&y,&x2,&y2); flag=0; bfs(); if(flag) printf("YES\n"); else printf("NO\n"); } } return 0;}
0 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 连连看
- C/C++中内存管理相关知识
- 学习笔记:12864液晶模块的详细使用
- CentOS安装VMwareTools
- SpringMVC 统一异常处理入口
- 40个迹象表明你还是PHP菜鸟
- hdu 1175 连连看
- No result defined for action xxx.action.LoginAction and result success总结
- 走台阶的问题的心得
- tomcat服务器输入localhost可以访问,ip无法访问解决办法
- Tomcat的JNDI数据源
- Java网络编程从入门到精通(22):实现HTTP模拟器
- 拓扑排序
- iOS帐号、证书之漫谈(四)—— 申请Apple ID,不绑定银行卡
- SVM 原理详解,通俗易懂