#LAISIR54. 孤島探險 II(Island Exploration II)

孤島探險 II(Island Exploration II)

🏝️ 題目名稱:孤島探險 II(Island Exploration II)

【題目描述】

你獲得了一張巨大的地圖,地圖由 .# 組成,代表海洋與陸地。 地圖的大小為 N × M。若兩個陸地格(#)在上下左右四個方向中有一個相鄰,則它們屬於同一座島嶼。

請你計算整張地圖中共有多少座互不相連的島嶼。


【輸入格式】

輸入的第一行包含兩個整數 NM,分別表示地圖的行與列。

接下來的 N 行,每行包含 M 個字符,只包含 .#


【輸出格式】

輸出一個整數,表示地圖中島嶼的總數。


【數據範圍】

1 ≤ N, M ≤ 2000

地圖總格數 N × M 最多可達 4,000,000(四百萬)。 你需要在合理時間內完成計算。 請注意避免重複搜尋與過深遞迴導致的棧溢出。


【樣例輸入】

5 7
.#.....
.###..#
..#..##
...####
.......

【樣例輸出】

2

【樣例說明】

這張地圖中有兩座島嶼。 第一座在左上角,第二座位於右方連成一片。 程式必須能在面對數百萬格的輸入時仍高效計算。