結果
| 問題 | 
                            No.697 池の数はいくつか
                             | 
                    
| ユーザー | 
                             | 
                    
| 提出日時 | 2022-11-04 00:31:43 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 2,522 ms / 6,000 ms | 
| コード長 | 766 bytes | 
| コンパイル時間 | 157 ms | 
| コンパイル使用メモリ | 82,120 KB | 
| 実行使用メモリ | 284,828 KB | 
| 最終ジャッジ日時 | 2024-07-18 06:04:52 | 
| 合計ジャッジ時間 | 17,364 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 32 | 
ソースコード
from collections import deque
h, w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
par = [[-1 for _ in range(w)] for _ in range(h)]
ans = 0
for x in range(h):
  for y in range(w):
    if a[x][y] == 0 or par[x][y] != -1:
      continue
    dq = deque()
    sx, sy = x, y
    dq.appendleft((sx, sy))
    par[sx][sy] = ans
    while len(dq) > 0:
      cx, cy = dq.pop()
      for i in range(4):
        nx = cx + dx[i]
        if nx < 0 or nx >= h:
          continue
        ny = cy + dy[i]
        if ny < 0 or ny >= w:
          continue
        if a[nx][ny] == 0 or par[nx][ny] != -1:
          continue
        par[nx][ny] = ans
        dq.appendleft((nx, ny))
    ans += 1
print(ans)