多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > C. Ice Cave (CF #301 (Div. 2) 搜索bfs)

C. Ice Cave (CF #301 (Div. 2) 搜索bfs)

來源:程序員人生   發布時間:2015-05-05 07:46:42 閱讀次數:3976次

C. Ice Cave
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You play a computer game. Your character stands on some level of a multilevel ice cave. In order to move on forward, you need to descend one level lower and the only way to do this is to fall through the ice.

The level of the cave where you are is a rectangular square grid of n rows and m columns. Each cell consists either from intact or from cracked ice. From each cell you can move to cells that are side-adjacent with yours (due to some limitations of the game engine you cannot make jumps on the same place, i.e. jump from a cell to itself). If you move to the cell with cracked ice, then your character falls down through it and if you move to the cell with intact ice, then the ice on this cell becomes cracked.

Let's number the rows with integers from 1 to n from top to bottom and the columns with integers from 1 to m from left to right. Let's denote a cell on the intersection of the r-th row and the c-th column as (r,?c).

You are staying in the cell (r1,?c1) and this cell is cracked because you've just fallen here from a higher level. You need to fall down through the cell (r2,?c2) since the exit to the next level is there. Can you do this?

Input

The first line contains two integers, n and m (1?≤?n,?m?≤?500) ― the number of rows and columns in the cave description.

Each of the next n lines describes the initial state of the level of the cave, each line consists of m characters "." (that is, intact ice) and "X" (cracked ice).

The next line contains two integers, r1 and c1 (1?≤?r1?≤?n,?1?≤?c1?≤?m) ― your initial coordinates. It is guaranteed that the description of the cave contains character 'X' in cell (r1,?c1), that is, the ice on the starting cell is initially cracked.

The next line contains two integers r2 and c2 (1?≤?r2?≤?n,?1?≤?c2?≤?m) ― the coordinates of the cell through which you need to fall. The final cell may coincide with the starting one.

Output

If you can reach the destination, print 'YES', otherwise print 'NO'.

Sample test(s)
input
4 6 X...XX ...XX. .X..X. ...... 1 6 2 2
output
YES
input
5 4 .X.. ...X X.X. .... .XX. 5 3 1 1
output
NO
input
4 7 ..X.XX. .XX..X. X...X.. X...... 2 2 1 6
output
YES
Note

In the first sample test one possible path is:

After the first visit of cell (2,?2) the ice on it cracks and when you step there for the second time, your character falls through the ice as intended.


題意:n*m的地圖,'X'表示有裂縫的冰塊,'.'表示完全的冰塊,有裂縫的冰塊再被踩1次就會碎掉,完全的冰塊被踩1次會變成有裂縫的冰塊,現在告知出發點和終點,問從出發點能否走到終點并且使終點的冰塊碎掉。不能原地跳。出發點和終點可能會在同1個位置。

思路:若終點vis>=2就表明可以。

代碼:

#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <map> #include <stack> #include <vector> #include <set> #include <queue> #pragma comment (linker,"/STACK:102400000,102400000") #define maxn 1005 #define MAXN 2005 #define mod 1000000009 #define INF 0x3f3f3f3f #define pi acos(⑴.0) #define eps 1e⑹ #define lson rt<<1,l,mid #define rson rt<<1|1,mid+1,r #define FRE(i,a,b) for(i = a; i <= b; i++) #define FREE(i,a,b) for(i = a; i >= b; i--) #define FRL(i,a,b) for(i = a; i < b; i++) #define FRLL(i,a,b) for(i = a; i > b; i--) #define mem(t, v) memset ((t) , v, sizeof(t)) #define sf(n) scanf("%d", &n) #define sff(a,b) scanf("%d %d", &a, &b) #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c) #define pf printf #define DBG pf("Hi ") typedef long long ll; using namespace std; struct Node { int x,y; }; char mp[555][555]; int vis[555][555]; int dir[4][2]={1,0,⑴,0,0,1,0,⑴}; int n,m,sx,sy,tx,ty; bool isok(int x,int y) { if (x>=1&&x<=n&&y>=1&&y<=m) return true; return false; } bool bfs() { Node st,now; queue<Node>Q; st.x=sx,st.y=sy; vis[sx][sy]=1; Q.push(st); while (!Q.empty()) { st=Q.front(); Q.pop(); if (vis[tx][ty]>=2) return true; for (int i=0;i<4;i++) { now.x=st.x+dir[i][0]; now.y=st.y+dir[i][1]; if (isok(now.x,now.y)&&((mp[now.x][now.y]!='X'&&!vis[now.x][now.y])||(now.x==tx&&now.y==ty))) { Q.push(now); vis[now.x][now.y]++; } } } return false; } int main() { // freopen("C:/Users/asus1/Desktop/IN.txt","r",stdin); int i,j; while (~scanf("%d%d",&n,&m)) { memset(vis,0,sizeof(vis)); for (i=1;i<=n;i++) { scanf("%s",mp[i]+1); for (j=1;j<=m;j++) if (mp[i][j]=='X') vis[i][j]++; } scanf("%d%d%d%d",&sx,&sy,&tx,&ty); if (bfs()) printf("YES "); else printf("NO "); } return 0; }




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 一级女性全黄久久生活片免费 | 日韩精品国产自在久久现线拍 | h免费在线观看 | 成人国产精品视频频 | 成人男女啪啪免费观看网站 | 国产成人精品日本亚洲专一区 | 国产在线a | 成人爱爱网站在线观看 | 久久精品网址 | 一区二区精品久久 | 国产精品免费福利 | 成人免费视频一区 | 亚洲天堂女人 | 日韩欧美精品综合一区二区三区 | 国产日产欧美一区二区三区 | 久久久高清日本道免费观看 | 精品成人在线视频 | 中文字幕不卡一区 二区三区 | bbbbbxxxxx肥胖| 亚洲美日韩 | 日韩精品一区二区三区视频网 | 亚洲午夜精品久久久久 | 久久精品国产一区二区三区 | 在线亚洲一区二区 | 国产码欧美日韩高清综合一区 | 亚洲日本中文字幕天堂网 | 欧美成人性色生活18黑人 | 国产一区二区三区精品视频 | 在线成人tv天堂中文字幕 | 一二三四日本手机高清视频 | 欧美一级欧美一级高清 | 亚洲精品在线视频 | 91av综合| 亚洲午夜久久影院 | 一二三四视频在线6 1免费观看 | 日韩欧美1区 | 亚洲人成a在线网站 | 九色中文| jizz免费| 亚洲欧美激情精品一区二区 | 欧美成人观看免费完全 |