結果
| 問題 |
No.13 囲みたい!
|
| コンテスト | |
| ユーザー |
nagitaosu
|
| 提出日時 | 2020-03-13 13:11:17 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 78 ms / 5,000 ms |
| コード長 | 1,033 bytes |
| コンパイル時間 | 763 ms |
| コンパイル使用メモリ | 82,288 KB |
| 実行使用メモリ | 76,400 KB |
| 最終ジャッジ日時 | 2024-11-21 23:27:38 |
| 合計ジャッジ時間 | 1,833 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 |
ソースコード
#!/usr/bin/env python3
import sys
input = sys.stdin.readline
w, h = map(int, input().split())
field = []
visited = [[0] * (w+2) for _ in range(h+2)]
field.append([-1] * (w + 2))
for _ in range(h):
line = [-1] + [int(item) for item in input().split()] + [-1]
field.append(line)
field.append([-1] * (w + 2))
delta = [(1, 0), (0, 1), (-1, 0), (0, -1)]
def dfs(sx, sy):
st = [(sx, sy, -1, -1)]
c = field[sx][sy]
visited[sx][sy] = 1
while st:
x, y, px, py = st.pop()
for dx, dy in delta:
if x + dx == px and y + dy == py:
continue
if field[x + dx][y + dy] == c:
if not visited[x + dx][y + dy]:
visited[x + dx][y + dy] = 1
st.append((x+dx, y+dy, x, y))
elif visited[x + dx][y + dy]:
print("possible")
exit()
for i in range(1, 1+h):
for j in range(1, 1+w):
if visited[i][j]:
continue
dfs(i, j)
print("impossible")
nagitaosu