https://www.acmicpc.net/problem/1012
import sys
sys.setrecursionlimit(10**6)
def dfs(x, y):
dy = [0, 0, -1, 1]
dx = [1, -1, 0, 0]
for i in range(4):
ax = x+dx[i]
ay = y+dy[i]
if ax >= 0 and ay >= 0 and ax < m and ay < n:
if graph[ay][ax] == 1:
graph[ay][ax] = -1
dfs(ax, ay)
if __name__ == "__main__":
T = int(input())
for _ in range(T):
count = 0
m, n, k = map(int, sys.stdin.readline().split())
graph = [[0 for _ in range(m)] for _ in range(n)]
for _ in range(k):
x, y = map(int, sys.stdin.readline().split())
graph[y][x] = 1
for x in range(m):
for y in range(n):
if graph[y][x] == 1:
dfs(x, y)
count += 1
print(count)
https://hei-jayden.tistory.com/100 <- 이 코드보다 실행 속도가 훨씬 빠른데, 이유를 알 수 없다.