BFS 聯通塊 記憶化搜素 洛谷P1141

2021-08-29 09:51:49 字數 585 閱讀 5651

題目鏈結在此!:

首先提一下,這個題目就是很簡單的bfs,dalao們的並查集我也沒看懂(我蒻),直接寫bfs肯定是會t的,因為每乙個搜圖都會有很多重複的地方被搜到了。

下面說思路:在這個圖中,很明顯就是一些聯通塊,每乙個塊裡面的每乙個座標的答案都是一樣的。那麼我們就直接把搜過的地方的每乙個座標都記錄下來,然後這些座標的值全部都是一樣的。

直接上**比較清晰:

#include using namespace std;

typedef pairp;

const int maxn = 1010;

int g[maxn][maxn];

bool vis[maxn][maxn];

int ans[maxn][maxn];

int dx=;

int dy=;

int cnt = 1;

void init()

vector> asked;

int n,m;

void bfs(int x,int y)

} }}int main()

} for(int i=0;i雖然這種做法比較慢,但是還是過了這道題。

Hdu 1428(記憶化搜素 最短路)

hdu 1428 思路 求出圖的逆向最短路,即每個點到 n,n 的最短路,然後求出 1,1 到 n,n 的最短路的數量,num i j 記錄點 1,1 到 i,j 過程中的最短路的條數,然後遇到之前求過最短路的點就直接返回,否則求解後再返回。參考文章 include include include ...

洛谷 1434 滑雪(記憶化搜尋)

思路 用h i j 表示雪坡的高度,f i j 為到達此處的最長滑坡。include define r i,a,b for int i a i b i 迴圈 define pk putchar 32 空格 define ph putchar 10 換行 using namespace std int...

洛谷 P1141 記憶化搜尋

有乙個僅由數字000與111組成的n nn times nn n格迷宮。若你位於一格0上,那麼你可以移動到相鄰444格中的某一格111上,同樣若你位於一格1上,那麼你可以移動到相鄰444格中的某一格000上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 輸入格式 第111...