【題目描述】
有乙個僅由數字0與1組成的n*n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。
你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格仔(包含自身)。
【資料範圍】
n<=1000
m<=100000
【分析】
顯然互相可以到達的格仔的答案是一樣的。這樣的一條路徑上所有點的答案都是路徑的長度。所以求聯通塊即可。具體的實現用dfs和bfs都可以。
#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
int dx=;
int dy=;
const int n=1000+5;
const int m=100000+5;
char ch[n][n];
int n,m;
int a[n][n],vis[n][n]=,sum[n][n]=;
struct hahanode[m];
queueq;
vectorans;
void bfs(int x,int y)
} }}int main()
for (int i=1;i<=m;i++)
}
洛谷 P1141 記憶化搜尋
有乙個僅由數字000與111組成的n nn times nn n格迷宮。若你位於一格0上,那麼你可以移動到相鄰444格中的某一格111上,同樣若你位於一格1上,那麼你可以移動到相鄰444格中的某一格000上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 輸入格式 第111...
BFS 聯通塊 記憶化搜素 洛谷P1141
題目鏈結在此!首先提一下,這個題目就是很簡單的bfs,dalao們的並查集我也沒看懂 我蒻 直接寫bfs肯定是會t的,因為每乙個搜圖都會有很多重複的地方被搜到了。下面說思路 在這個圖中,很明顯就是一些聯通塊,每乙個塊裡面的每乙個座標的答案都是一樣的。那麼我們就直接把搜過的地方的每乙個座標都記錄下來,...
01迷宮 洛谷
有乙個僅由數字 000 與 111 組成的 n nn times nn n 格迷宮。若你位於一格0上,那麼你可以移動到相鄰 444 格中的某一格 111 上,同樣若你位於一格1上,那麼你可以移動到相鄰 444 格中的某一格 000 上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 ...