連通塊的題目

2022-07-16 22:57:28 字數 1363 閱讀 1015

題目:

タナカ氏が hw アールの果樹園を殘して亡くなりました。果樹園は東西南北方向に h × w の區畫に分けられ、區畫ごとにリンゴ、カキ、ミカンが植えられています。タナカ氏はこんな遺言を殘していました。

果樹園は區畫単位でできるだけ多くの血縁者に分けること。ただし、ある區畫の東西南北どれかの方向にとなりあう區畫に同じ種類の果物が植えられていた場合は、區畫の境界が分からないのでそれらは 1 つの大きな區畫として扱うこと。

例えば次のような 3 × 10 の區畫であれば ('リ'はリンゴ、'カ'はカキ、'ミ'はミカンを表す)

同じ樹がある區畫の間の境界を消すと次のようになり、

結局 10 個の區畫、つまり 10 人で分けられることになります。

雪が降って區畫の境界が見えなくなる前に分配を終えなくてはなりません。あなたの仕事は果樹園の地図をもとに分配する區畫の數を決めることです。

果樹園の地図を読み込み、分配を受けられる血縁者の人數を出力するプログラムを作成してください。

複數のデータセットが與えられます。各データセットは空白で區切られた h, w (h, w ≤ 100) を含む行から始まり、続いて h × w の文字からなる h 行の文字列が與えられます。この文字列には、リンゴを表す '@'、カキを表す '#'、ミカンを表す '*'、の 3 文字しか現れません。

入力はゼロが2つの行で終わります。データセットの數は 20 を超えません。

各データセットごとに、分配を受ける人數を1行に出力してください。

10 10

####*****@

@#@@@@#*#*

@##***@@@*

#****#*@**

##@*#@@*##

*@@@@*@@@#

***#@*@##*

*@@@*@@##@

*@*#*@##**

@****#@@#@

0 0

33
**:

#include #include 

using

namespace

std;

#define directsize 4

struct

_direct direct[directsize] =, , , };

const

int n = 100

;string

grid[n];

inth, w, ans;

void dfs(int row, int col, char

c) }

}int

main()

}cout

<< ans <

}return0;

}

連通塊計數

小 a 有一棵長的很奇怪的樹,他由 n 條鏈和 1 個點作為根構成,第 i 條鏈有 ai 個點,每一條鏈的一端都與根結點相連。現在小 a 想知道,這棵長得奇怪的樹有多少非空的連通子樹,你只需要輸出答案對 998244353 取模的值即可 第一行乙個正整數 n 第二行 n 個正整數 a1 an 輸出答...

dfs的連通塊問題

01迷宮 連通塊 在搜尋的過程中,從開始的塊開始,它能走過的塊是連在一起的,即它們能夠走的最大距離是是相同的。所以在搜尋的過程中,我們要把走過的先連在一起,用個陣列儲存走過的每一塊,然後在搜尋的最後,對在陣列的每一塊賦值。include include using namespace std int...

dfs求連通塊

遞迴是什麼?絕大部分人都會說 自己呼叫自己,剛開始我也是這樣理解遞迴的。確實沒錯,遞迴的確是自己呼叫自己。遞迴簡單的應用 編寫乙個能計算斐波那契數列的函式,也就是這樣 int fac int n 相信絕大部分人都能看懂這段 遞迴除了可以用自己呼叫自己這樣描述之外,還可以這樣表示遞迴函式 遞推式 邊界...