반응형
import sys
sys.setrecursionlimit(100000)
t = int(sys.stdin.readline())
xx = [-1,1,0,0]
yy = [0,0,-1,1]
def dfs(a, b):
graph[a][b] = -1
for i in range(4):
if 0 <= a+one[i] < n and 0 <= b+two[i] < m:
if graph[a+xx[i]][b+yy[i]] == 1:
dfs(a+xx[i], b+yy[i])
return
for _ in range(t):
m,n,k = map(int, sys.stdin.readline().split())
graph = [[0 for _ in range(m)] for _ in range(n)]
count = 0
for _ in range(k):
x, y = map(int, sys.stdin.readline().split())
graph[y][x] = 1
for t in range(n):
for r in range(m):
if graph[t][r] == 1:
dfs(t, r)
count += 1
print(count)
맨 처음 인접리스트로 풀려하였다가 괜히 산으로 가는 것 같아서 인접행렬로 바꾼 후 dfs로 풀었다.
딱히 획기적인 방법으로 푼것은 아니고 그냥 평범한 풀이.
반응형
'코딩 이야기 > 백준 풀이' 카테고리의 다른 글
백준 1697번: 숨바꼭질 파이썬 코드(bfs) (0) | 2021.03.17 |
---|---|
백준 7576번: 토마토 파이썬 코드(bfs) (0) | 2021.03.17 |
백준 1038번: 감소하는 수 파이썬 코드(백트래킹) (3) | 2021.02.16 |
백준 4963번: 섬의 개수 파이썬 코드(dfs) (0) | 2021.02.14 |
백준 1010번: 다리 놓기 파이썬 코드 (2) | 2021.02.11 |