FZU 2150 多起點bfs 結構

2021-10-12 09:49:32 字數 1686 閱讀 6603

題目:兩個熊孩子在n*m的平地上放火玩,#表示草,兩個熊孩子分別選乙個#格仔點火,火可以向上向下向左向右在有草的格仔蔓延,點火的地方時間為0,蔓延至下一格的時間依次加一。求燒完所有的草需要的最少時間。如不能燒完輸出-1。input第一行,輸入乙個t,表示有t組測試資料。

每組資料由乙個n,m分別表示行列

1 <= t <=100, 1 <= n <=10, 1 <= m <=10

output

輸出最少需要的時間》

sample input

43 3

.#..#.

3 3.#.

#.#.#.

3 3…

#.#…

3 3…#

#.#sample output

case 1: 1

case 2: -1

case 3: 0

case 4: 2

首先計算草塊的個數,如果其大於2顯然輸出-1

當其小於二時,列舉可能的任意兩個可能的點。

對於就算塊數也是通過bfs來實現

對於列舉任意兩個的情況如果僅是暴力的列舉會超時

所以我們給每個節點附上屬於的區域的標記,著有利於減小列舉的次數

細節看**

ac**

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#include

using

namespace std;

char mp[15]

[15];

//存圖

int vis[15]

[15];

//訪問標記

int belong[15]

[15];

//節點屬於區域標記

int op[4]

[2]=

,,,}

;//運算元組

int board =0;

//存區域個數

typedef

struct

status;

intbfs

(int n,

int m)}}

if(maxstep}}

return minstep;

}void

find_board

(int x,

int y,

int n,

int m)

}return;}

intmain()

board =0;

memset

(belong,0,

sizeof

(belong));

for(

int a=

1;a<=n;a++

)for

(int b=

1;b<=m;b++

)printf

("case %d: "

,i);

if(board>=3)

else

}return0;

}

今日學習總結2 15

繫結方法分兩種 繫結給類的和繫結給物件的 既不繫結給類也不繫結給物件 隱藏屬性是有應用場景的 a.在類定義階段用雙下劃線開頭的方式將屬性隱藏起來,發生了語法生的變形 類名 屬性名 b.隱藏對外不對內 c.只有在類定義階段發生變形,其他情況都不發生變形了 類裡面的隱藏屬性,類外部可以使用,但是目的不是...

FZU 單詞問題

給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字元 不包含空格 句子長度不超過 10...

fzu 單詞問題

description 給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。input 輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字...