[アルゴリズム]4963島の数
投稿の作成を選択して問題を復習する基準は<解決済みです.ac天銀2(Silver 2)以上>.
※この写真と投稿内容の問題はすべて『Baekjoon OnlineJudge』から抜粋しています.
に質問
Baekjoonオンラインローエンド:4963島の数
ほどく
My Code
メモリ:32452 KB
時間:116ミリ秒
My Code
メモリ:32452 KB
時間:116ミリ秒
dx
とdy
、移動方向操作m
に設定される.各陸地の開始座標について
visited
で検査を行い、後で島の数を繰り返し検査しないようにする(定義関数bfs
)import sys
input = sys.stdin.readline
dx =[0,0,1,-1, 1,1,-1,-1]
dy =[1,-1,0,0, 1,-1,1,-1]
from collections import deque
def bfs(w,h) :
q = deque()
q.append([h, w])
visited[h][w] = 1
while q:
h, w = q.popleft()
for i in range(8):
nw = w + dx[i]
nh = h + dy[i]
if 0 <= nw < W and 0 <= nh < H:
if m[nh][nw] == 1 and visited[nh][nw] == 0:
visited[nh][nw] = 1
q.append([nh, nw])
while True :
W, H = map(int, input().split())
if W==0 and H ==0 :
break
m = []
visited = [[0]*W for _ in range(H)]
for _ in range(H) :
m.append(list(map(int, input().split())))
land=0
for i in range(H):
for k in range(W) :
if m[i][k] == 1 and visited[i][k] == 0 :
bfs(k,i)
land+=1
print(land)
Reference
この問題について([アルゴリズム]4963島の数), 我々は、より多くの情報をここで見つけました https://velog.io/@yummygyudon/알고리즘-4963-섬의-개수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol