01迷宮 洛谷

2021-08-21 17:37:08 字數 1493 閱讀 7657

有乙個僅由數字 000 與 111 組成的 n×nn \times nn×n 格迷宮。若你位於一格0上,那麼你可以移動到相鄰 444 格中的某一格 111 上,同樣若你位於一格1上,那麼你可以移動到相鄰 444 格中的某一格 000 上。

你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格仔(包含自身)。

輸入格式:

第 111 行為兩個正整數 n,mn,mn,m 。

下面 nnn 行,每行 nnn 個字元,字元只可能是 000 或者 111 ,字元之間沒有空格。

接下來 mmm 行,每行 222 個用空格分隔的正整數 i,ji,ji,j ,對應了迷宮中第 iii 行第 jjj 列的乙個格仔,詢問從這一格開始能移動到多少格。

輸出格式:

mmm 行,對於每個詢問輸出相應答案。

輸入樣例#1:複製

2 2

0110

1 12 2

輸出樣例#1:複製

4

4

所有格仔互相可達。

對於 20%20\%20% 的資料, n≤10n≤10n≤10 ;

對於 40%40\%40% 的資料, n≤50n≤50n≤50 ;

對於 50%50\%50% 的資料, m≤5m≤5m≤5 ;

對於 60%60\%60% 的資料, n≤100,m≤100n≤100,m≤100n≤100,m≤100 ;

對於 100%100\%100% 的資料, n≤1000,m≤100000n≤1000,m≤100000n≤1000,m≤100000 。

一道比較普通的bfs可以用bfs或者記憶化的dfs(沒試過),下面是一些收穫:

1.變數可以反覆用,沒必要多設定,比如一開始讀入的n就可用在讀入完後用

2.有時候要改的時候用替換是非常有用的(特別是後面很多相同的要換的)

3.嗯這道題的輸入一開始然我有點慌(沒有空格!!qwq)後面發現可以按位寬來輸入%1d這樣子

4.然後這題就是做bfs的時候這個指標要特別注意一下,以為我是讓一次bfs中佇列裡的全部位置等於開頭的那個位置,所以應該讓"dick=l+1",一開始讓dick=l,爆蛤(這告訴我們以後提交前先自己針對著編幾組資料,不然就爆蛤了)

附**:

#include#include#includeusing namespace std;

int n,m,l,r,x1,y1,dick,mid1,mid2,bfs[1000080][2],ma[1100][1100],ans[1100][1100],che[1100][1100];

int a[4]=;

int b[4]=;

void bbfs(int x,int y)

} }for(int i=dick;i<=r;i++)

}void inint()

int main()

01迷宮(洛谷P1141)

題目描述 有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 資料範圍 n 1000 m 100000 分析 顯然互相...

洛谷題集 01迷宮(dfs bfs)

有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 輸入格式 第1行為兩個正整數n,m。下面n行,每行n個字元,字元只...

洛谷1141 01迷宮

題目描述 有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 輸入輸出格式 輸入格式 輸入的第1行為兩個正整數n,m。...