1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Sランク・スキルチェック見本問題セット(言語選択)
  4. 問題一覧 C++編
  5. 島探し C++編

Sランク・スキルチェック見本問題セットのサムネイル
島探し C++編(paizaランク S 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

列の数がM、行の数がNの表があります。表の各マスは白か黒で塗られています。
黒で塗られたマスが上下左右で隣接している時、その黒マスの塊をまとめて「島」と呼びます。
例えば、以下のような4列×5行の表(M=4、N=5)があった場合、



この表には以下の(1)~(3)のように3つの島が存在します。



島の数を計算して出力するプログラムを作成して下さい。

入力される値

1行目には、列の数Mと行の数Nがスペース区切りで入力されます。
2行目以降のN行には、スペース区切りでM個の数字が入力されます。 各行は'0'が白、'1'が黒のマスをそれぞれ表します。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

島の数を一行で出力して下さい。

条件

10個のテストケースの内、8個のテストケースにおいて以下の条件を満たします。
1 ≦ N,M ≦ 100

10個のテストケースの内、全てのテストケースにおいて以下の条件を満たします。
1 ≦ N,M ≦ 1,000

入力例1

4 5
0 1 1 0
1 0 1 0
1 0 0 0
0 0 1 1
0 1 1 1

出力例1

3

入力例2

6 6
1 1 1 1 1 1
1 0 1 0 0 0
1 0 1 0 1 1
0 1 0 0 0 1
1 0 1 1 1 1
0 1 0 0 0 0

出力例2

5

問題一覧へ戻る

ページの先頭へ戻る