import sys
sys.setrecursionlimit(10 ** 8)
input = sys.stdin.readline
n, m = map(int, input().split())
connect = [[False] * n for _ in range(n)]
for _ in range(m) :
x, y = map(int, input().split())
connect[x-1][y-1] = True
connect[y-1][x-1] = True
answer = 0
check = [False] * n
def dfs(i):
for j in range(n):
if not check[j] and connect[i][j] :
check[j] = True
dfs(j)
for i in range(n):
if not check[i]:
answer += 1
check[i] = True
dfs(i)
print(answer)
DFS를 이용해 해결했다.
체크 배열을 이용해 중복 체크를 방지하고, 재귀를 통해 연결된 노드를 검색 하도록 했다.
'프로그램 > 코딩테스트' 카테고리의 다른 글
백준 1987 알파벳 (0) | 2022.06.13 |
---|---|
백준 2178 미로 탐색 (0) | 2022.06.13 |
백준 1449 수리공 항승 (0) | 2022.06.13 |
백준 1931 회의실 배정 (0) | 2022.06.13 |
백준 3085 사탕 게임 (0) | 2022.06.13 |
댓글