洛谷P1363 幻想迷宮

2021-09-12 08:17:35 字數 1239 閱讀 4382

背景 background

(喵星人lhx和wd同心協力擊退了汪星人的入侵,不幸的是,汪星人撤退之前給它們製造了一片幻象迷宮。)

wd:嗚嗚,腫麼辦啊……

lhx:momo…我們一定能走出去的!

wd:嗯,+u+u!

描述 description

幻象迷宮可以認為是無限大的,不過它由若干個n*m的矩陣重複組成。矩陣中有的地方是道路,用』.『表示;有的地方是牆,用』#『表示。lhx和wd所在的位置用』s』表示。也就是對於迷宮中的乙個點(x,y),如果(x mod n,y mod m)是』.『或者』s』,那麼這個地方是道路;如果(x mod n,y mod m)是』#』,那麼這個地方是牆。lhx和wd可以向上下左右四個方向移動,當然不能移動到牆上。

請你告訴lhx和wd,它們能否走出幻象迷宮(如果它們能走到距離起點無限遠處,就認為能走出去)。如果不能的話,lhx就只好啟動城堡的毀滅程式了……當然不到萬不得已,他不想這麼做。。。

輸入包含多組資料,以eof結尾。

每組資料的第一行是兩個整數n、m。

接下來是乙個n*m的字元矩陣,表示迷宮裡(0,0)到(n-1,m-1)這個矩陣單元。

對於每組資料,輸出乙個字串,yes或者no。

#include #include const int size = 1505;

using namespace std;

int arr[size][size];

int book[size][size][3];

bool flag;

int dx = ;

int dy = ;

int n,m;

int startx,starty;

void dfs(int x,int y,int lx,int ly)

if(book[x][y][0] && (book[x][y][1] != lx || book[x][y][2] != ly))

book[x][y][0] = 1;

book[x][y][1] = lx;

book[x][y][2] = ly;

for(int i = 0; i < 4; i ++)}}

}char ch;

int main()

if(ch == 's')}}

dfs(startx,starty,startx,starty);

if(flag)else

}return 0;

}

洛谷P1363 幻想迷宮

背景 background 喵星人lhx和wd同心協力擊退了汪星人的入侵,不幸的是,汪星人撤退之前給它們製造了一片幻象迷宮。wd 嗚嗚,腫麼辦啊 lhx momo.我們一定能走出去的!wd 嗯,u u!描述 description 幻象迷宮可以認為是無限大的,不過它由若干個n m的矩陣重複組成。矩陣...

洛谷 P1363 幻想迷宮

背景 background 喵星人lhx和wd同心協力擊退了汪星人的入侵,不幸的是,汪星人撤退之前給它們製造了一片幻象迷宮。wd 嗚嗚,腫麼辦啊 lhx momo.我們一定能走出去的!wd 嗯,u u!描述 description 幻象迷宮可以認為是無限大的,不過它由若干個n m的矩陣重複組成。矩陣...

洛谷 P1363 幻想迷宮 解題報告

背景 background 喵星人lhx和wd同心協力擊退了汪星人的入侵,不幸的是,汪星人撤退之前給它們製造了一片幻象迷宮。wd 嗚嗚,腫麼辦啊 lhx momo.我們一定能走出去的!wd 嗯,u u!描述 description 幻象迷宮可以認為是無限大的,不過它由若干個n m的矩陣重複組成。矩陣...