洛谷P1363 幻想迷宮

2021-08-19 20:36:03 字數 1614 閱讀 1782

背景 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就只好啟動城堡的毀滅程式了……當然不到萬不得已,他不想這麼做。。。

輸入格式:

輸入格式 inputformat

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

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

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

輸出格式:

輸出格式 outputformat

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

輸入樣例#1:

複製

5 4

##.#

##s#

#..#

#.##

#..#

5 4##.#

##s#

#..#

..#.

#.##

輸出樣例#1:

複製

yes

no

資料範圍和注釋 hint

對於30%的資料,n,m<=20

對於50%的資料,n.m<=100.

對於100%的資料,n,m<=1500,每個測試點不超過10組資料.

參考:走到乙個位置,判斷該位置的映象是否被訪問過

(x%n+n)%n是因為負數取模是負數,得+n先變成正數再取下模

#include#include#includeusing namespace std;

#define maxn 1511

int n, m;

int sx, sy;

char map[maxn];

bool vis[maxn][maxn];//記錄乙個單個地圖哪些地方無法走

bool mvis[maxn][maxn];//取模後標記陣列

int mx[maxn][maxn];

int my[maxn][maxn];

int dx[4] = ;

int dy[4] = ;

bool dfs(int x, int y)

return false;

}int main()

}} if (dfs(sx, sy))

cout << "yes" << endl;

else

cout << "no" << endl; }

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的矩陣重複組成。矩陣...