有乙個僅由數字 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輸出樣例#1:複製0110
1 12 2
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。...