hdu 1175 其实真的可以不用搜索!!
2012-03-31 00:55
197 查看
#include <iostream> #include <cstdio> using namespace std; int n,m,p; int map[1002][1002]; int dist[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int narrow[1002][1002]; bool solve(int x,int y,int xx,int yy) { if(map[xx][yy]!=map[x][y]) return false; if(map[x][y]==0) return false; if(x==xx&&y==yy) return false; for(int i=0;i<4;i++) { int a=x+dist[i][0]; int b=y+dist[i][1]; if(a==xx&&yy==b) return true; } memset(narrow,0,sizeof(narrow)); for(int i=y+1;i<=m&&map[x][i]==0;i++) { narrow[x][i]=1; for(int j=x+1;j<=n&&map[j][i]==0;j++) narrow[j][i]=1; for(int j=x-1;j>=0&&map[j][i]==0;j--) narrow[j][i]=1; } for(int i=y-1;i>0&&map[x][i]==0;i--) { narrow[x][i]=1; for(int j=x+1;j<=n&&map[j][i]==0;j++) narrow[j][i]=1; for(int j=x-1;j>=0&&map[j][i]==0;j--) narrow[j][i]=1; } for(int i=x-1;i>0&&map[i][y]==0;i--) { narrow[i][y]=1; for(int j=y+1;j<=m&&map[i][j]==0;j++) narrow[i][j]=1; for(int j=x-1;j>=0&&map[i][j]==0;j--) narrow[i][j]=1; } for(int i=x+1;i<=n&&map[i][y]==0;i++) { narrow[i][y]=1; for(int j=y+1;j<=m&&map[i][j]==0;j++) narrow[i][j]=1; for(int j=x-1;j>=0&&map[i][j]==0;j--) narrow[i][j]=1; } for(int i=yy+1;i<=m&&map[xx][i]==0;i++) if(narrow[xx][i]) return true; for(int i=yy-1;i>0&&map[xx][i]==0;i--) if(narrow[xx][i]) return true; for(int i=xx-1;i>0&&map[i][yy]==0;i--) if(narrow[i][yy]) return true; for(int i=xx+1;i<=n&&map[i][yy]==0;i++) if(narrow[i][yy]) return true; return false; } int main() { 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",&p); for(int i=0;i<p;i++) { int x,y,xx,yy; scanf("%d%d%d%d",&x,&y,&xx,&yy); if(solve(x,y,xx,yy)) puts("YES"); else puts("NO"); } } return 0; }
相关文章推荐
- 【搜索之BFS + 剪枝】杭电 hdu 1175 连连看
- HDU 1175 连连看 DFS+搜索+方向
- HDU 1175(搜索题,BFS)
- hdu 1175 连连看 搜索—dfs
- HDU-1272小希的迷宫,并查集?其实不用并查集;
- hdu 1175 [连连看] dfs搜索
- hdu 1175 连连看(BFS的搜索方向与效率问题)
- hdu 1175 连连看(搜索)
- HDU 1175(搜索DFS)
- HDU 5877 Weak Pair DFS + 树状数组 + 其实不用离散化
- HDU 1175 连连看 (搜索,dfs)
- 【暴力搜索】[HDU 1175]连连看
- 连连看 1175 HDU(广度搜索)
- HDU 1175 连连看 (搜索 DFS)
- HDU 1175 连连看(搜索)
- HDU 2102 A计划 (搜索 队列)
- HDU 2340 Obfuscation (DP--记忆话搜索)
- hdu 1240:Asteroids!(三维BFS搜索)
- 【搜索】 HDU 4770 Lights Against Dudely
- [搜索] hdu 4016 Magic Bitwise And Operation