cf 540-C. Ice Cave
来源:互联网 发布:淘宝卖家如何借贷 编辑:程序博客网 时间:2024/05/22 03:20
点击打开链接
题意:
一个地图,' . '代表冰路,踩一次以后就会变成‘ X ’,X再踩就会掉到下一层。
给你一个现成的地图,问你如果想从某个坐标出发,走到某个坐标到下一层能否到达。
题解:
直接搜索起点到终点能否联通。
然后特判重点周围能走的路有哪几种。直接就能得出能否掉下冰层:
如果终点周围只有一个位置。 那么到达该点必定走这条路,所以如果重点是X 则yes 否则 no
如果终点周围有两个及两个以上的位置。那么只要能到达该点,必定能下去。
#include <stdio.h>#include <math.h>#include <cstring>#include <algorithm>#include <queue>#define LL long longusing namespace std;char a[555][555];int v[555][555]={0};int dir[4][2]={1,0,0,1,-1,0,0,-1};int n,m,sx,sy,ex,ey,ans;int judge(int x,int y){ if(x<0||x>=n||y<0||y>=m) return 0; if(v[x][y]==1) return 0; if(a[x][y]=='X'){ if(x==ex-1&&y==ey-1) return 1; else return 0; } return 1;}int ju(int x,int y){ if(x<0||x>=n||y<0||y>=m) return 0; if(a[x][y]=='X') { if(x==ex-1&&y==ey-1)return 1; else if(x==sx-1&&y==sy-1) return 1; else return 0; } return 1;}struct node{ int x,y;}e,u;void bfs(int x,int y){ e.x=x,e.y=y; v[x][y]=1; queue<node>que; while(!que.empty()) que.pop(); que.push(e); while(!que.empty()){ u=que.front(); que.pop(); if(u.x==ex-1&&u.y==ey-1) { ans=1; return ; } for(int i=0;i<4;++i){ e.x=u.x+dir[i][0]; e.y=u.y+dir[i][1]; if(judge(e.x,e.y)){ que.push(e); v[e.x][e.y]=1; } } }}int main(){ ans=0; scanf("%d %d",&n,&m); for(int i=0;i<n;++i){ getchar(); for(int j=0;j<m;++j){ scanf("%c",&a[i][j]); } } scanf("%d %d",&sx,&sy); scanf("%d %d",&ex,&ey); if(sx==ex&&sy==ey) { for(int i=0;i<4;++i){ int tx=sx-1+dir[i][0]; int ty=sy-1+dir[i][1]; if(ju(tx,ty)) ans=1; } if(ans==1){ printf("YES\n"); return 0; } } bfs(sx-1,sy-1); int cnt=0; for(int i=0;i<4;++i){ int tx=ex-1+dir[i][0]; int ty=ey-1+dir[i][1]; if(ju(tx,ty)) cnt++; } if(ans==1&&cnt>1) printf("YES\n"); else if(ans==1&&a[ex-1][ey-1]=='X'&&cnt==1) printf("YES\n"); else printf("NO\n"); return 0;}
点击打开链接
题意:
一个地图,' . '代表冰路,踩一次以后就会变成‘ X ’,X再踩就会掉到下一层。
给你一个现成的地图,问你如果想从某个坐标出发,走到某个坐标到下一层能否到达。
题解:
直接搜索起点到终点能否联通。
然后特判重点周围能走的路有哪几种。直接就能得出能否掉下冰层:
如果终点周围只有一个位置。 那么到达该点必定走这条路,所以如果重点是X 则yes 否则 no
如果终点周围有两个及两个以上的位置。那么只要能到达该点,必定能下去。
0 0
- cf 540 C Ice Cave
- cf 540-C. Ice Cave
- cf#301-C. Ice Cave-BFS
- Ice Cave-CF-C(bfs)
- CF Ice Cave
- CodeForces 540C Ice Cave
- CF #301 504C C. Ice Cave BFS
- C. Ice Cave (CF #301 (Div. 2) 搜索bfs)
- CodeForces 540C Ice Cave (BFS)
- CodeForces 540 C Ice Cave (BFS)
- codeforces 540C Ice Cave【BFS】
- Codeforces 540C Ice Cave (BFS)
- Ice Cave
- #301 (div.2) C. Ice Cave
- 【Codeforces】C. Ice Cave(bfs)
- Codeforces 301(div 2) C. Ice Cave
- Codeforces Round #301 (Div. 2)C - Ice Cave-bfs
- Codeforces Round #301 (Div. 2) C. Ice Cave(BFS)
- vector的内存分配机制分析
- 关于CSS中hover失效的几个原因
- mysql主从复制
- Javascript 代码优化
- Java内省introspector
- cf 540-C. Ice Cave
- 关于NIO笔记(二):缓冲区Buffer
- RBAC打造通用web管理权限02
- Longest Common Prefix
- SSH学习之Struts2的环境搭建
- Javascript原型链
- 【模板】常用排序
- c语言程序设计现代方法---第四章:表达式
- git忽略文件和文件夹