백준 2606번 바이러스 풀이 dfs로 탐색하고 탐색 결과의 개수를 출력하도록 풀었습니다. n = int(input()) m = int(input()) matrix = [[0] * (n+1) for i in range(n+1)] seen = [0] * (n+1) for _ in range(m): a, b = map(int, input().split()) matrix[a][b] = matrix[b][a] = 1 result = [] def dfs(v): seen[v] = 1 for i in range(1, n+1): if matrix[v][i] == 1 and seen[i] == 0: result.append(i) dfs(i) return len(result) print(dfs(1))