暴力BFS 中山紀念中學暑期遊Day10 洪水

2021-09-26 02:17:11 字數 2092 閱讀 3815

暴力bfs打醜了...100分完美變身20分...

一天, 乙個畫家在森林裡寫生,突然爆發了山洪,他需要盡快返回住所中,那裡是安

全的。森林的地圖由r行c列組成,空白區域用點「.」表示,洪水的區域用「*」表示,而

岩石用「x」表示,另畫家的住所用「d」表示,畫家用「s」表示。

有以下幾點需要說明:

1、 每一分鐘畫家能向四個方向移動一格(上、下、左、右)

2、 每一分鐘洪水能蔓延到四個方向的相鄰格仔(空白區域)

3、 洪水和畫家都不能通過岩石區域

4、 畫家不能通過洪水區域(同時也不行,即畫家不能移到某個格仔,該格仔在畫家達到的同時被洪水蔓延到了,這也是不允許的)

5、 洪水蔓不到畫家的住所。

給你森林的地圖,編寫程式輸出最少需要花費多長時間才能從開始的位置趕回家中。

input

輸入第一行包含兩個整數r和c(r,c<=50)。

接下來r行每行包含c個字元(「.」、「*」、「x」、「d」或「s」)。地圖保證只有乙個「d」和乙個「s」。

output

輸出畫家最快安全到達住所所需的時間,如果畫家不可能安全回家則輸出「kaktus」。

sample input

輸入1:

3 3

d.*

...

.s.

輸入2:

3 3

d.*

.....s

輸入3:

3 6

d...*.

.x.x..

....s.

sample output

輸出1:

3輸出2:

kaktus

輸出3:

6

本來是正解,我料到了「有多個洪水源點」的情況,結果沒想到資料中有很多「沒有洪水」的情況....開心20分爆掉...

法一:兩次暴力bfs,

第一次bfs洪水到達(i,j)的最早時間,bfs的時候先把每一層的節點擴充套件完,然後時間t++,再把擴充套件出的新點一起壓進佇列

第二次bfs畫家到達(i,j)的最早時間

要點注意:

1.洪水的源點可能有不止乙個

2.要考慮圖中沒有洪水的情況

#include#include#include#include#include#include#includeusing namespace std;

const int maxn=50,inf=0x3f3f3f3f;

char a[maxn+5][maxn+5];

int dir1[5]=,dir2[5]=;

int f[maxn+5][maxn+5];//洪水到達(i,j)的最早時間

bool vis[maxn+5][maxn+5];

int n,m,ans=0x3f3f3f3f;

int sx,sy,tx,ty;

bool flag=false;

struct node

;vectorwater;

void bfs1()

,dir2[5]=;

int f[maxn+5][maxn+5];//洪水到達(i,j)的最早時間

int t[maxn+5][maxn+5];

int n,m,ans=0x3f3f3f3f;

int sx,sy,tx,ty;

bool flag=false;

struct node

;vectorwater;

void bfs1()

if(a[dx][dy]=='.'&&t[q.x][q.y]+10)

bfs1();

bfs2();

if(flag)

printf("%d",ans-1);//開始時間定為1

else

printf("kaktus");

return 0;

}

2019 遊記 中山紀念中學暑期遊Day3

今天沒有考試,專門講課,聽不懂的同學還可以回機房瞎搞 感覺安排的還可以,至少時間還是挺充裕的,只是講解的內容太多了,消化不完qaq.早上依舊沒有早起.三天過去了,我連有沒有鈴聲都不知道 去食堂吃了乙個椰蓉麵包 學校居然取名 奶皇麵包 是的,我字沒有打錯,看起來就是這樣高大上,然鵝吃起來像批發的 乙個...

2019 遊記 中山紀念中學暑期遊Day6

今天的安排是 聽課!資料結構 專題,花了一早上和一下午,晚上在搞乙個兄弟自己出的題目 賊坑 於是時間又沒了qaq.真心覺得時間怎麼都不夠用啊咧.早上還是沒有早起成功,於是匆匆趕往食堂,居然有公尺漢堡 公尺飯夾雞肉 吃得還算滿意qwq 來到報告廳,座位不出所料的被佔滿了,可是還是get到乙個c位 人品...

2019 遊記 中山紀念中學暑期遊Day9

昨天去珠海玩了下,感覺還不錯誒,就是好熱好曬.很想細寫但是沒時間,故事大多都在 上了 其實現在正在打字的我是10號的我.來填坑了23333.詳情記不到了,直接說考試 這次考試真的考得好炸,都是難以暴力應付的題qwq.第一題 自己想到了是dp,而且和正解的狀態定義都一樣!但是不會打,這就很現實了.暴力...