日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > C. Ice Cave (CF #301 (Div. 2) 搜索bfs)

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

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-05-05 07:46:42 閱讀次數(shù):3979次

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次就會(huì)碎掉,完全的冰塊被踩1次會(huì)變成有裂縫的冰塊,現(xiàn)在告知出發(fā)點(diǎn)和終點(diǎn),問(wèn)從出發(fā)點(diǎn)能否走到終點(diǎn)并且使終點(diǎn)的冰塊碎掉。不能原地跳。出發(fā)點(diǎn)和終點(diǎn)可能會(huì)在同1個(gè)位置。

思路:若終點(diǎn)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; }




生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 成人免费大片在线观看 | 国产黄色三级毛片 | 国产美女视频网站 | 久久激情网站 | 免费淫片 | 欧美性猛交xxxx黑人交 | 国产黄色av网站 | 黄a大片 | 精品欧美乱码久久久久久 | 美女激情av| a级毛片网 | 蜜桃久久av | 国产精品一区二区三 | 日韩毛片 | 国产在线黄色 | 国产精品一区二区三区av | 国产男女视频 | 亚洲成人av在线播放 | 99久久国产综合精品麻豆 | va在线观看 | 中文字幕日韩一区二区 | 中文字幕乱码日本亚洲一区二区 | 四虎影院最新地址 | 国产中文在线播放 | 国产精品尤物 | 黄色一级a毛片 | 91久久国产综合久久 | 亚洲福利精品 | 久久久久久久婷婷 | 99精品免费久久 | 色综合社区 | 黄色av三级 | av毛片| 亚洲国产综合在线观看 | 中文字幕三区 | 日本成人在线播放 | 18做爰免费视频网站 | 久久五月天婷婷 | 成人欧美一区二区三区黑人动态图 | 久久久综合色 | av在线免费网站 |