白駿1202号-ウイルス
1147 ワード
dx, dy = [0, 0, -1, 1], [1, -1, 0, 0]
def bfs():
visited.append((i, j))
queue = [(i, j)]
while True:
xx, yy = queue.pop()
for ii in range(4):
nx, ny = dx[ii] + xx, dy[ii] + yy
if nx >= m or nx < 0 or ny >= n or ny < 0:
continue
if (nx, ny) in visited or graph[nx][ny] == 0:
continue
visited.append((nx, ny))
queue.append((nx, ny))
if not queue:
break
for _ in range(int(input())):
m, n, k = map(int, input().split())
graph = [[0] * n for _ in range(m)]
for i in range(k):
x, y = map(int, input().split())
graph[x][y] = 1
visited = []
result = 0
for i in range(m):
for j in range(n):
if (i, j) in visited or graph[i][j] == 0:
continue
bfs()
result += 1
print(result)
プール(bfsを通るプール)1.図形をすべて0に初期化し、白菜のある領域を1に初期化します.
2.すべてのグラフにアクセスする場合は、白菜が存在する領域をbfsとして確認し、確認した場所をvistedに置き、再度アクセスできません.
3.bfsを回転するたびにresult+1を、白菜の白ミミズを何匹必要か見つけて出力します.
Reference
この問題について(白駿1202号-ウイルス), 我々は、より多くの情報をここで見つけました https://velog.io/@aksmf1442/백준-1202번-바이러스-79fd2o76テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol